src/Doc/JEdit/JEdit.thy
author wenzelm
Tue, 29 Oct 2013 19:45:55 +0100
changeset 54349 fd5ddf2bce76
parent 54348 923690bfb818
child 54350 b0cdb4b10d20
permissions -rw-r--r--
more on problems and workarounds;
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
53981
1f4d6870b7b2 more on text completion;
wenzelm
parents: 53886
diff changeset
     1
(*:wrap=hard:maxLineLen=78:*)
1f4d6870b7b2 more on text completion;
wenzelm
parents: 53886
diff changeset
     2
53769
036e80175bdd basic setup for Isabelle/jEdit documentation;
wenzelm
parents:
diff changeset
     3
theory JEdit
036e80175bdd basic setup for Isabelle/jEdit documentation;
wenzelm
parents:
diff changeset
     4
imports Base
036e80175bdd basic setup for Isabelle/jEdit documentation;
wenzelm
parents:
diff changeset
     5
begin
036e80175bdd basic setup for Isabelle/jEdit documentation;
wenzelm
parents:
diff changeset
     6
036e80175bdd basic setup for Isabelle/jEdit documentation;
wenzelm
parents:
diff changeset
     7
chapter {* Introduction *}
036e80175bdd basic setup for Isabelle/jEdit documentation;
wenzelm
parents:
diff changeset
     8
53770
db362319d766 added/updated material from src/Tools/jEdit/README.html;
wenzelm
parents: 53769
diff changeset
     9
section {* Concepts and terminology *}
db362319d766 added/updated material from src/Tools/jEdit/README.html;
wenzelm
parents: 53769
diff changeset
    10
54321
41951f427ac7 more documentation;
wenzelm
parents: 54320
diff changeset
    11
text {* Isabelle/jEdit is a Prover IDE that integrates \emph{parallel
41951f427ac7 more documentation;
wenzelm
parents: 54320
diff changeset
    12
  proof checking} \cite{Wenzel:2009,Wenzel:2013:ITP} with
41951f427ac7 more documentation;
wenzelm
parents: 54320
diff changeset
    13
  \emph{asynchronous user interaction}
41951f427ac7 more documentation;
wenzelm
parents: 54320
diff changeset
    14
  \cite{Wenzel:2010,Wenzel:2012:UITP-EPTCS}, based on a
41951f427ac7 more documentation;
wenzelm
parents: 54320
diff changeset
    15
  document-oriented approach to \emph{continuous proof processing}
41951f427ac7 more documentation;
wenzelm
parents: 54320
diff changeset
    16
  \cite{Wenzel:2011:CICM,Wenzel:2012}. Many concepts and system
41951f427ac7 more documentation;
wenzelm
parents: 54320
diff changeset
    17
  components are fit together in order to make this work. The main
54329
e0fa4bd16c80 misc tuning;
wenzelm
parents: 54323
diff changeset
    18
  building blocks are as follows.
53769
036e80175bdd basic setup for Isabelle/jEdit documentation;
wenzelm
parents:
diff changeset
    19
54321
41951f427ac7 more documentation;
wenzelm
parents: 54320
diff changeset
    20
  \begin{description}
53769
036e80175bdd basic setup for Isabelle/jEdit documentation;
wenzelm
parents:
diff changeset
    21
54329
e0fa4bd16c80 misc tuning;
wenzelm
parents: 54323
diff changeset
    22
  \item [PIDE] is a general framework for Prover IDEs based on
e0fa4bd16c80 misc tuning;
wenzelm
parents: 54323
diff changeset
    23
  Isabelle/Scala. It is built around a concept of parallel and
e0fa4bd16c80 misc tuning;
wenzelm
parents: 54323
diff changeset
    24
  asynchronous document processing, which is supported natively by the
e0fa4bd16c80 misc tuning;
wenzelm
parents: 54323
diff changeset
    25
  parallel proof engine that is implemented in Isabelle/ML. The prover
e0fa4bd16c80 misc tuning;
wenzelm
parents: 54323
diff changeset
    26
  discontinues the traditional TTY-based command loop, and supports
e0fa4bd16c80 misc tuning;
wenzelm
parents: 54323
diff changeset
    27
  direct editing of formal source text with rich formal markup for GUI
e0fa4bd16c80 misc tuning;
wenzelm
parents: 54323
diff changeset
    28
  rendering.
53770
db362319d766 added/updated material from src/Tools/jEdit/README.html;
wenzelm
parents: 53769
diff changeset
    29
54321
41951f427ac7 more documentation;
wenzelm
parents: 54320
diff changeset
    30
  \item [Isabelle/ML] is the implementation and extension language of
41951f427ac7 more documentation;
wenzelm
parents: 54320
diff changeset
    31
  Isabelle, see also \cite{isabelle-implementation}. It is integrated
54329
e0fa4bd16c80 misc tuning;
wenzelm
parents: 54323
diff changeset
    32
  into the logical context of Isabelle/Isar and allows to manipulate
e0fa4bd16c80 misc tuning;
wenzelm
parents: 54323
diff changeset
    33
  logical entities directly. Arbitrary add-on tools may be implemented
e0fa4bd16c80 misc tuning;
wenzelm
parents: 54323
diff changeset
    34
  for object-logics such as Isabelle/HOL.
53770
db362319d766 added/updated material from src/Tools/jEdit/README.html;
wenzelm
parents: 53769
diff changeset
    35
54321
41951f427ac7 more documentation;
wenzelm
parents: 54320
diff changeset
    36
  \item [Isabelle/Scala] is the system programming language of
41951f427ac7 more documentation;
wenzelm
parents: 54320
diff changeset
    37
  Isabelle. It extends the pure logical environment of Isabelle/ML
41951f427ac7 more documentation;
wenzelm
parents: 54320
diff changeset
    38
  towards the ``real world'' of graphical user interfaces, text
41951f427ac7 more documentation;
wenzelm
parents: 54320
diff changeset
    39
  editors, IDE frameworks, web services etc.  Special infrastructure
54348
wenzelm
parents: 54331
diff changeset
    40
  allows to transfer algebraic datatype values and formatted text
54329
e0fa4bd16c80 misc tuning;
wenzelm
parents: 54323
diff changeset
    41
  easily between ML and Scala, using asynchronous protocol commands.
54321
41951f427ac7 more documentation;
wenzelm
parents: 54320
diff changeset
    42
54329
e0fa4bd16c80 misc tuning;
wenzelm
parents: 54323
diff changeset
    43
  \item [jEdit] is a sophisticated text editor implemented in
e0fa4bd16c80 misc tuning;
wenzelm
parents: 54323
diff changeset
    44
  Java.\footnote{\url{http://www.jedit.org}} It is easily extensible
e0fa4bd16c80 misc tuning;
wenzelm
parents: 54323
diff changeset
    45
  by plugins written in languages that work on the JVM, e.g.\
e0fa4bd16c80 misc tuning;
wenzelm
parents: 54323
diff changeset
    46
  Scala\footnote{\url{http://www.scala-lang.org/}}.
53770
db362319d766 added/updated material from src/Tools/jEdit/README.html;
wenzelm
parents: 53769
diff changeset
    47
54321
41951f427ac7 more documentation;
wenzelm
parents: 54320
diff changeset
    48
  \item [Isabelle/jEdit] is the main example application of the PIDE
54329
e0fa4bd16c80 misc tuning;
wenzelm
parents: 54323
diff changeset
    49
  framework and the default user-interface for Isabelle. It targets
e0fa4bd16c80 misc tuning;
wenzelm
parents: 54323
diff changeset
    50
  both beginners and experts. Technically, Isabelle/jEdit combines a
e0fa4bd16c80 misc tuning;
wenzelm
parents: 54323
diff changeset
    51
  slightly modified version of the official jEdit code base with a
e0fa4bd16c80 misc tuning;
wenzelm
parents: 54323
diff changeset
    52
  special plugin for Isabelle, integrated as standalone application
e0fa4bd16c80 misc tuning;
wenzelm
parents: 54323
diff changeset
    53
  for the main operating system platforms: Linux, Windows, Mac OS X.
53770
db362319d766 added/updated material from src/Tools/jEdit/README.html;
wenzelm
parents: 53769
diff changeset
    54
54321
41951f427ac7 more documentation;
wenzelm
parents: 54320
diff changeset
    55
  \end{description}
53770
db362319d766 added/updated material from src/Tools/jEdit/README.html;
wenzelm
parents: 53769
diff changeset
    56
54321
41951f427ac7 more documentation;
wenzelm
parents: 54320
diff changeset
    57
  The subtle differences of Isabelle/ML versus Standard ML,
54330
wenzelm
parents: 54329
diff changeset
    58
  Isabelle/Scala versus Scala, Isabelle/jEdit versus jEdit need to be
wenzelm
parents: 54329
diff changeset
    59
  taken into account when discussing any of these PIDE building blocks
wenzelm
parents: 54329
diff changeset
    60
  in public forums, mailing lists, or even scientific publications.
wenzelm
parents: 54329
diff changeset
    61
  *}
53770
db362319d766 added/updated material from src/Tools/jEdit/README.html;
wenzelm
parents: 53769
diff changeset
    62
db362319d766 added/updated material from src/Tools/jEdit/README.html;
wenzelm
parents: 53769
diff changeset
    63
db362319d766 added/updated material from src/Tools/jEdit/README.html;
wenzelm
parents: 53769
diff changeset
    64
section {* The Isabelle/jEdit Prover IDE *}
db362319d766 added/updated material from src/Tools/jEdit/README.html;
wenzelm
parents: 53769
diff changeset
    65
db362319d766 added/updated material from src/Tools/jEdit/README.html;
wenzelm
parents: 53769
diff changeset
    66
text {*
54331
9e944630be0c more screenshots;
wenzelm
parents: 54330
diff changeset
    67
  \begin{figure}[htbp]
9e944630be0c more screenshots;
wenzelm
parents: 54330
diff changeset
    68
  \begin{center}
53773
36703fcea740 added canonical screenshot;
wenzelm
parents: 53771
diff changeset
    69
  \includegraphics[width=\textwidth]{isabelle-jedit}
54331
9e944630be0c more screenshots;
wenzelm
parents: 54330
diff changeset
    70
  \end{center}
9e944630be0c more screenshots;
wenzelm
parents: 54330
diff changeset
    71
  \caption{The Isabelle/jEdit Prover IDE}
9e944630be0c more screenshots;
wenzelm
parents: 54330
diff changeset
    72
  \end{figure}
53773
36703fcea740 added canonical screenshot;
wenzelm
parents: 53771
diff changeset
    73
54321
41951f427ac7 more documentation;
wenzelm
parents: 54320
diff changeset
    74
  Isabelle/jEdit consists of some plugins for the well-known jEdit
41951f427ac7 more documentation;
wenzelm
parents: 54320
diff changeset
    75
  text editor \url{http://www.jedit.org}, according to the following
53770
db362319d766 added/updated material from src/Tools/jEdit/README.html;
wenzelm
parents: 53769
diff changeset
    76
  principles.
db362319d766 added/updated material from src/Tools/jEdit/README.html;
wenzelm
parents: 53769
diff changeset
    77
db362319d766 added/updated material from src/Tools/jEdit/README.html;
wenzelm
parents: 53769
diff changeset
    78
  \begin{itemize}
53769
036e80175bdd basic setup for Isabelle/jEdit documentation;
wenzelm
parents:
diff changeset
    79
54321
41951f427ac7 more documentation;
wenzelm
parents: 54320
diff changeset
    80
  \item The original jEdit look-and-feel is generally preserved,
54348
wenzelm
parents: 54331
diff changeset
    81
  although some default properties are changed to accommodate Isabelle
wenzelm
parents: 54331
diff changeset
    82
  (e.g.\ the text area font).
53770
db362319d766 added/updated material from src/Tools/jEdit/README.html;
wenzelm
parents: 53769
diff changeset
    83
54321
41951f427ac7 more documentation;
wenzelm
parents: 54320
diff changeset
    84
  \item Formal Isabelle/Isar text is checked asynchronously while
41951f427ac7 more documentation;
wenzelm
parents: 54320
diff changeset
    85
  editing.  The user is in full command of the editor, and the prover
41951f427ac7 more documentation;
wenzelm
parents: 54320
diff changeset
    86
  refrains from locking portions of the buffer.
53770
db362319d766 added/updated material from src/Tools/jEdit/README.html;
wenzelm
parents: 53769
diff changeset
    87
db362319d766 added/updated material from src/Tools/jEdit/README.html;
wenzelm
parents: 53769
diff changeset
    88
  \item Prover feedback works via colors, boxes, squiggly underline,
54348
wenzelm
parents: 54331
diff changeset
    89
  hyperlinks, popup windows, icons, clickable output --- all based on
54321
41951f427ac7 more documentation;
wenzelm
parents: 54320
diff changeset
    90
  semantic markup produced by Isabelle in the background.
53770
db362319d766 added/updated material from src/Tools/jEdit/README.html;
wenzelm
parents: 53769
diff changeset
    91
54321
41951f427ac7 more documentation;
wenzelm
parents: 54320
diff changeset
    92
  \item Using the mouse together with the modifier key @{verbatim
41951f427ac7 more documentation;
wenzelm
parents: 54320
diff changeset
    93
  CONTROL} (Linux, Windows) or @{verbatim COMMAND} (Mac OS X) exposes
41951f427ac7 more documentation;
wenzelm
parents: 54320
diff changeset
    94
  additional formal content via tooltips and/or hyperlinks.
53769
036e80175bdd basic setup for Isabelle/jEdit documentation;
wenzelm
parents:
diff changeset
    95
54321
41951f427ac7 more documentation;
wenzelm
parents: 54320
diff changeset
    96
  \item Formal output (in popups etc.) may be explored recursively,
41951f427ac7 more documentation;
wenzelm
parents: 54320
diff changeset
    97
  using the same techniques as in the editor source buffer.
53770
db362319d766 added/updated material from src/Tools/jEdit/README.html;
wenzelm
parents: 53769
diff changeset
    98
54329
e0fa4bd16c80 misc tuning;
wenzelm
parents: 54323
diff changeset
    99
  \item Additional panels (e.g.\ \emph{Output}, \emph{Symbols}) are
e0fa4bd16c80 misc tuning;
wenzelm
parents: 54323
diff changeset
   100
  organized by the Dockable Window Manager of jEdit, which also allows
e0fa4bd16c80 misc tuning;
wenzelm
parents: 54323
diff changeset
   101
  multiple floating instances of each window class.
e0fa4bd16c80 misc tuning;
wenzelm
parents: 54323
diff changeset
   102
54321
41951f427ac7 more documentation;
wenzelm
parents: 54320
diff changeset
   103
  \item The prover process and source files are managed on the editor
41951f427ac7 more documentation;
wenzelm
parents: 54320
diff changeset
   104
  side.  The prover operates on timeless and stateless document
54348
wenzelm
parents: 54331
diff changeset
   105
  content as provided via Isabelle/Scala.
53770
db362319d766 added/updated material from src/Tools/jEdit/README.html;
wenzelm
parents: 53769
diff changeset
   106
54321
41951f427ac7 more documentation;
wenzelm
parents: 54320
diff changeset
   107
  \item Plugin options of jEdit (for the \emph{Isabelle} plugin) give
54348
wenzelm
parents: 54331
diff changeset
   108
  access to a selection of Isabelle/Scala options and its persistent
54321
41951f427ac7 more documentation;
wenzelm
parents: 54320
diff changeset
   109
  preferences, usually with immediate effect on the prover back-end or
41951f427ac7 more documentation;
wenzelm
parents: 54320
diff changeset
   110
  editor front-end.
53770
db362319d766 added/updated material from src/Tools/jEdit/README.html;
wenzelm
parents: 53769
diff changeset
   111
db362319d766 added/updated material from src/Tools/jEdit/README.html;
wenzelm
parents: 53769
diff changeset
   112
  \item The logic image of the prover session may be specified within
54348
wenzelm
parents: 54331
diff changeset
   113
  Isabelle/jEdit.  The new image is provided automatically by the
wenzelm
parents: 54331
diff changeset
   114
  Isabelle build tool after restart of the application.
53770
db362319d766 added/updated material from src/Tools/jEdit/README.html;
wenzelm
parents: 53769
diff changeset
   115
db362319d766 added/updated material from src/Tools/jEdit/README.html;
wenzelm
parents: 53769
diff changeset
   116
  \end{itemize}
53769
036e80175bdd basic setup for Isabelle/jEdit documentation;
wenzelm
parents:
diff changeset
   117
*}
036e80175bdd basic setup for Isabelle/jEdit documentation;
wenzelm
parents:
diff changeset
   118
53770
db362319d766 added/updated material from src/Tools/jEdit/README.html;
wenzelm
parents: 53769
diff changeset
   119
54321
41951f427ac7 more documentation;
wenzelm
parents: 54320
diff changeset
   120
subsection {* Documentation *}
41951f427ac7 more documentation;
wenzelm
parents: 54320
diff changeset
   121
41951f427ac7 more documentation;
wenzelm
parents: 54320
diff changeset
   122
text {* Regular jEdit documentation is accessible via its @{verbatim
41951f427ac7 more documentation;
wenzelm
parents: 54320
diff changeset
   123
  Help} menu or @{verbatim F1} keyboard shortcut. This includes a full
41951f427ac7 more documentation;
wenzelm
parents: 54320
diff changeset
   124
  \emph{User's Guide} and \emph{Frequently Asked Questions} for this
41951f427ac7 more documentation;
wenzelm
parents: 54320
diff changeset
   125
  sophisticated text editor.
41951f427ac7 more documentation;
wenzelm
parents: 54320
diff changeset
   126
54329
e0fa4bd16c80 misc tuning;
wenzelm
parents: 54323
diff changeset
   127
  Most of this information about jEdit is relevant for Isabelle/jEdit
e0fa4bd16c80 misc tuning;
wenzelm
parents: 54323
diff changeset
   128
  as well, but one needs to keep in mind that defaults sometimes
e0fa4bd16c80 misc tuning;
wenzelm
parents: 54323
diff changeset
   129
  differ, and the official jEdit documentation does not know about the
e0fa4bd16c80 misc tuning;
wenzelm
parents: 54323
diff changeset
   130
  Isabelle plugin with its special support for theory editing.
54321
41951f427ac7 more documentation;
wenzelm
parents: 54320
diff changeset
   131
*}
41951f427ac7 more documentation;
wenzelm
parents: 54320
diff changeset
   132
41951f427ac7 more documentation;
wenzelm
parents: 54320
diff changeset
   133
41951f427ac7 more documentation;
wenzelm
parents: 54320
diff changeset
   134
subsection {* Plugins *}
41951f427ac7 more documentation;
wenzelm
parents: 54320
diff changeset
   135
41951f427ac7 more documentation;
wenzelm
parents: 54320
diff changeset
   136
text {* The \emph{Plugin Manager} of jEdit allows to augment editor
41951f427ac7 more documentation;
wenzelm
parents: 54320
diff changeset
   137
  functionality by JVM modules (jars) that are provided by the central
54348
wenzelm
parents: 54331
diff changeset
   138
  plugin repository, which is accessible by various mirror sites.
54321
41951f427ac7 more documentation;
wenzelm
parents: 54320
diff changeset
   139
41951f427ac7 more documentation;
wenzelm
parents: 54320
diff changeset
   140
  Connecting to the plugin server infrastructure of the jEdit project
54348
wenzelm
parents: 54331
diff changeset
   141
  allows to update bundled plugins or to add further functionality.
wenzelm
parents: 54331
diff changeset
   142
  This needs to be done with the usual care for such an open bazaar of
wenzelm
parents: 54331
diff changeset
   143
  contributions. Arbitrary combinations of add-on features are apt to
wenzelm
parents: 54331
diff changeset
   144
  cause problems.  It is advisable to start with the default
wenzelm
parents: 54331
diff changeset
   145
  configuration of Isabelle/jEdit and develop some understanding how
wenzelm
parents: 54331
diff changeset
   146
  it is supposed to work, before loading additional plugins at a grand
wenzelm
parents: 54331
diff changeset
   147
  scale.
54321
41951f427ac7 more documentation;
wenzelm
parents: 54320
diff changeset
   148
54348
wenzelm
parents: 54331
diff changeset
   149
  \medskip The main \emph{Isabelle} plugin is an integral part of
wenzelm
parents: 54331
diff changeset
   150
  Isabelle/jEdit and needs to remain active at all times! A few
wenzelm
parents: 54331
diff changeset
   151
  additional plugins are bundled with Isabelle/jEdit for convenience
wenzelm
parents: 54331
diff changeset
   152
  or out of necessity, notably \emph{Console} with its Isabelle/Scala
wenzelm
parents: 54331
diff changeset
   153
  sub-plugin and \emph{SideKick} with some Isabelle-specific parsers
wenzelm
parents: 54331
diff changeset
   154
  for document tree structure.  The \emph{ErrorList} plugin is
wenzelm
parents: 54331
diff changeset
   155
  required by \emph{SideKick}, but not used specifically in
wenzelm
parents: 54331
diff changeset
   156
  Isabelle/jEdit. *}
54321
41951f427ac7 more documentation;
wenzelm
parents: 54320
diff changeset
   157
41951f427ac7 more documentation;
wenzelm
parents: 54320
diff changeset
   158
41951f427ac7 more documentation;
wenzelm
parents: 54320
diff changeset
   159
subsection {* Options *}
41951f427ac7 more documentation;
wenzelm
parents: 54320
diff changeset
   160
54329
e0fa4bd16c80 misc tuning;
wenzelm
parents: 54323
diff changeset
   161
text {* Both jEdit and Isabelle have distinctive management of
54348
wenzelm
parents: 54331
diff changeset
   162
  persistent options.
54321
41951f427ac7 more documentation;
wenzelm
parents: 54320
diff changeset
   163
54348
wenzelm
parents: 54331
diff changeset
   164
  Regular jEdit options are accessible via the dialogs for
wenzelm
parents: 54331
diff changeset
   165
  \emph{Global Options} and \emph{Plugin Options}.  Changed properties
wenzelm
parents: 54331
diff changeset
   166
  are stored eventually in @{verbatim
wenzelm
parents: 54331
diff changeset
   167
  "$ISABELLE_HOME_USER/jedit/properties"}.  In contrast, Isabelle
wenzelm
parents: 54331
diff changeset
   168
  system options are managed by Isabelle/Scala and changes stored in
wenzelm
parents: 54331
diff changeset
   169
  @{verbatim "$ISABELLE_HOME_USER/etc/preferences"}, independently of
wenzelm
parents: 54331
diff changeset
   170
  the jEdit properties.  See also \cite{isabelle-sys}, especially the
wenzelm
parents: 54331
diff changeset
   171
  coverage of sessions and command-line tools like @{tool build} or
wenzelm
parents: 54331
diff changeset
   172
  @{tool options}.
54321
41951f427ac7 more documentation;
wenzelm
parents: 54320
diff changeset
   173
54348
wenzelm
parents: 54331
diff changeset
   174
  Those Isabelle options that are declared as \textbf{public} are
wenzelm
parents: 54331
diff changeset
   175
  configurable in jEdit via \emph{Plugin Options / Isabelle /
wenzelm
parents: 54331
diff changeset
   176
  General}.  Moreover, there are various options for rendering of
wenzelm
parents: 54331
diff changeset
   177
  document content, which are configurable via \emph{Plugin Options /
wenzelm
parents: 54331
diff changeset
   178
  Isabelle / Rendering}.  Thus \emph{Plugin Options / Isabelle} in
wenzelm
parents: 54331
diff changeset
   179
  jEdit provides a view on certain Isabelle options.  Note that some
wenzelm
parents: 54331
diff changeset
   180
  of these options affect general parameters that are relevant outside
wenzelm
parents: 54331
diff changeset
   181
  Isabelle/jEdit as well, e.g.\ @{system_option threads} or
54321
41951f427ac7 more documentation;
wenzelm
parents: 54320
diff changeset
   182
  @{system_option parallel_proofs} for the Isabelle build tool
41951f427ac7 more documentation;
wenzelm
parents: 54320
diff changeset
   183
  \cite{isabelle-sys}.
54329
e0fa4bd16c80 misc tuning;
wenzelm
parents: 54323
diff changeset
   184
54348
wenzelm
parents: 54331
diff changeset
   185
  \medskip All options are loaded on startup and saved on shutdown of
54329
e0fa4bd16c80 misc tuning;
wenzelm
parents: 54323
diff changeset
   186
  Isabelle/jEdit.  Editing the machine-generated files @{verbatim
e0fa4bd16c80 misc tuning;
wenzelm
parents: 54323
diff changeset
   187
  "$ISABELLE_HOME_USER/jedit/properties"} or @{verbatim
e0fa4bd16c80 misc tuning;
wenzelm
parents: 54323
diff changeset
   188
  "$ISABELLE_HOME_USER/etc/preferences"} manually while the
54348
wenzelm
parents: 54331
diff changeset
   189
  application is running is likely to cause surprise due to lost
wenzelm
parents: 54331
diff changeset
   190
  update!  *}
54321
41951f427ac7 more documentation;
wenzelm
parents: 54320
diff changeset
   191
41951f427ac7 more documentation;
wenzelm
parents: 54320
diff changeset
   192
41951f427ac7 more documentation;
wenzelm
parents: 54320
diff changeset
   193
subsection {* Keymaps *}
41951f427ac7 more documentation;
wenzelm
parents: 54320
diff changeset
   194
41951f427ac7 more documentation;
wenzelm
parents: 54320
diff changeset
   195
text {* Keyboard shortcuts used to be managed as jEdit properties in
41951f427ac7 more documentation;
wenzelm
parents: 54320
diff changeset
   196
  the past, but recent versions (2013) have a separate concept of
54348
wenzelm
parents: 54331
diff changeset
   197
  \emph{keymap} that is configurable via \emph{Global Options /
wenzelm
parents: 54331
diff changeset
   198
  Shortcuts}.  The @{verbatim imported} keymap is derived from the
54330
wenzelm
parents: 54329
diff changeset
   199
  initial environment of properties that is available at the first
54348
wenzelm
parents: 54331
diff changeset
   200
  start of the editor; afterwards the keymap file takes precedence.
54321
41951f427ac7 more documentation;
wenzelm
parents: 54320
diff changeset
   201
41951f427ac7 more documentation;
wenzelm
parents: 54320
diff changeset
   202
  This is relevant for Isabelle/jEdit due to various fine-tuning of
41951f427ac7 more documentation;
wenzelm
parents: 54320
diff changeset
   203
  default properties, and additional keyboard shortcuts for Isabelle
54348
wenzelm
parents: 54331
diff changeset
   204
  specific functionality. Users may change their keymap, but need to
wenzelm
parents: 54331
diff changeset
   205
  copy Isabelle-specific key bindings manually.  *}
54321
41951f427ac7 more documentation;
wenzelm
parents: 54320
diff changeset
   206
41951f427ac7 more documentation;
wenzelm
parents: 54320
diff changeset
   207
54322
9d156ded3c2a more documentation;
wenzelm
parents: 54321
diff changeset
   208
subsection {* Look-and-feel *}
54321
41951f427ac7 more documentation;
wenzelm
parents: 54320
diff changeset
   209
54330
wenzelm
parents: 54329
diff changeset
   210
text {* jEdit is a Java/AWT/Swing application with some ambition to
54329
e0fa4bd16c80 misc tuning;
wenzelm
parents: 54323
diff changeset
   211
  support ``native'' look-and-feel on all platforms, within the limits
54330
wenzelm
parents: 54329
diff changeset
   212
  of what Oracle as Java provider and major operating system
wenzelm
parents: 54329
diff changeset
   213
  distributors allow (see also \secref{sec:problems}).
54321
41951f427ac7 more documentation;
wenzelm
parents: 54320
diff changeset
   214
54329
e0fa4bd16c80 misc tuning;
wenzelm
parents: 54323
diff changeset
   215
  Isabelle/jEdit enables platform-specific look-and-feel by default as
54330
wenzelm
parents: 54329
diff changeset
   216
  follows:
54321
41951f427ac7 more documentation;
wenzelm
parents: 54320
diff changeset
   217
41951f427ac7 more documentation;
wenzelm
parents: 54320
diff changeset
   218
  \begin{description}
41951f427ac7 more documentation;
wenzelm
parents: 54320
diff changeset
   219
41951f427ac7 more documentation;
wenzelm
parents: 54320
diff changeset
   220
  \item[Linux] The platform-independent \emph{Nimbus} is used by
54322
9d156ded3c2a more documentation;
wenzelm
parents: 54321
diff changeset
   221
  default, but the classic \emph{Metal} also works.  \emph{GTK+} works
9d156ded3c2a more documentation;
wenzelm
parents: 54321
diff changeset
   222
  under the side-condition that the overall GTK theme is selected in a
54348
wenzelm
parents: 54331
diff changeset
   223
  Swing-friendly way.\footnote{GTK support in Java/Swing was once
wenzelm
parents: 54331
diff changeset
   224
  marketed aggressively by Sun, but never quite finished, and is today
wenzelm
parents: 54331
diff changeset
   225
  (2013) lagging a bit behind further development of Swing and GTK.}
54321
41951f427ac7 more documentation;
wenzelm
parents: 54320
diff changeset
   226
41951f427ac7 more documentation;
wenzelm
parents: 54320
diff changeset
   227
  \item[Windows] Regular \emph{Windows} is used by default, but
41951f427ac7 more documentation;
wenzelm
parents: 54320
diff changeset
   228
  platform-independent \emph{Nimbus} and \emph{Metal} also work.
41951f427ac7 more documentation;
wenzelm
parents: 54320
diff changeset
   229
54348
wenzelm
parents: 54331
diff changeset
   230
  \item[Mac OS X] Regular \emph{Mac OS X} is used by default, but
wenzelm
parents: 54331
diff changeset
   231
  platform-independent \emph{Nimbus} and \emph{Metal} also work.
54321
41951f427ac7 more documentation;
wenzelm
parents: 54320
diff changeset
   232
  Moreover the bundled \emph{MacOSX} plugin provides various functions
41951f427ac7 more documentation;
wenzelm
parents: 54320
diff changeset
   233
  that are expected from applications on that particular platform:
41951f427ac7 more documentation;
wenzelm
parents: 54320
diff changeset
   234
  quit from menu or dock, preferences menu, drag-and-drop of text
41951f427ac7 more documentation;
wenzelm
parents: 54320
diff changeset
   235
  files on the application, full-screen mode for main editor windows
41951f427ac7 more documentation;
wenzelm
parents: 54320
diff changeset
   236
  etc.
41951f427ac7 more documentation;
wenzelm
parents: 54320
diff changeset
   237
41951f427ac7 more documentation;
wenzelm
parents: 54320
diff changeset
   238
  \end{description}
41951f427ac7 more documentation;
wenzelm
parents: 54320
diff changeset
   239
41951f427ac7 more documentation;
wenzelm
parents: 54320
diff changeset
   240
  Users may experiment with different look-and-feels, but need to keep
54329
e0fa4bd16c80 misc tuning;
wenzelm
parents: 54323
diff changeset
   241
  in mind that this extra variance of GUI functionality is unlikely to
54348
wenzelm
parents: 54331
diff changeset
   242
  work in arbitrary combinations.  The historic \emph{CDE/Motif} is
wenzelm
parents: 54331
diff changeset
   243
  better avoided.  After changing the look-and-feel in \emph{Global
wenzelm
parents: 54331
diff changeset
   244
  Options / Appearance}, it is advisable to restart Isabelle/jEdit in
wenzelm
parents: 54331
diff changeset
   245
  order to take full effect.  *}
54321
41951f427ac7 more documentation;
wenzelm
parents: 54320
diff changeset
   246
41951f427ac7 more documentation;
wenzelm
parents: 54320
diff changeset
   247
53770
db362319d766 added/updated material from src/Tools/jEdit/README.html;
wenzelm
parents: 53769
diff changeset
   248
chapter {* Prover IDE functionality *}
db362319d766 added/updated material from src/Tools/jEdit/README.html;
wenzelm
parents: 53769
diff changeset
   249
54322
9d156ded3c2a more documentation;
wenzelm
parents: 54321
diff changeset
   250
section {* Buffers and theories *}
9d156ded3c2a more documentation;
wenzelm
parents: 54321
diff changeset
   251
9d156ded3c2a more documentation;
wenzelm
parents: 54321
diff changeset
   252
text {* jEdit maintains a collection of open \emph{text buffers} to
9d156ded3c2a more documentation;
wenzelm
parents: 54321
diff changeset
   253
  store source files.  Each buffer may be associated with any number
54330
wenzelm
parents: 54329
diff changeset
   254
  of visible \emph{text areas}.  Buffers are subject to an \emph{edit
wenzelm
parents: 54329
diff changeset
   255
  mode} that is determined from the file type.  Files with extension
wenzelm
parents: 54329
diff changeset
   256
  \texttt{.thy} are assigned to the mode \emph{isabelle} and treated
wenzelm
parents: 54329
diff changeset
   257
  specifically.
54321
41951f427ac7 more documentation;
wenzelm
parents: 54320
diff changeset
   258
54329
e0fa4bd16c80 misc tuning;
wenzelm
parents: 54323
diff changeset
   259
  \medskip Isabelle theory files are automatically added to the formal
e0fa4bd16c80 misc tuning;
wenzelm
parents: 54323
diff changeset
   260
  document model of Isabelle/Scala, which maintains a family of
e0fa4bd16c80 misc tuning;
wenzelm
parents: 54323
diff changeset
   261
  versions of all sources for the prover.  The \emph{Theories} panel
54322
9d156ded3c2a more documentation;
wenzelm
parents: 54321
diff changeset
   262
  provides an overview of the status of continuous checking of theory
54329
e0fa4bd16c80 misc tuning;
wenzelm
parents: 54323
diff changeset
   263
  sources.  Unlike batch sessions \cite{isabelle-sys}, theory nodes
e0fa4bd16c80 misc tuning;
wenzelm
parents: 54323
diff changeset
   264
  are identified by full path names; this allows to work with multiple
e0fa4bd16c80 misc tuning;
wenzelm
parents: 54323
diff changeset
   265
  (disjoint) Isabelle sessions simultaneously within the same editor
e0fa4bd16c80 misc tuning;
wenzelm
parents: 54323
diff changeset
   266
  session.
54322
9d156ded3c2a more documentation;
wenzelm
parents: 54321
diff changeset
   267
54329
e0fa4bd16c80 misc tuning;
wenzelm
parents: 54323
diff changeset
   268
  Certain events to open or update buffers with theory files cause
e0fa4bd16c80 misc tuning;
wenzelm
parents: 54323
diff changeset
   269
  Isabelle/jEdit to resolve dependencies of \emph{theory imports}.
54330
wenzelm
parents: 54329
diff changeset
   270
  The system requests to load further files into editor buffers, in
wenzelm
parents: 54329
diff changeset
   271
  order to be added to the theory document model for further checking.
wenzelm
parents: 54329
diff changeset
   272
  It is also possible to resolve dependencies automatically, depending
wenzelm
parents: 54329
diff changeset
   273
  on the option @{system_option jedit_auto_load}.
54321
41951f427ac7 more documentation;
wenzelm
parents: 54320
diff changeset
   274
54329
e0fa4bd16c80 misc tuning;
wenzelm
parents: 54323
diff changeset
   275
  \medskip The open text area views on theory buffers define the
e0fa4bd16c80 misc tuning;
wenzelm
parents: 54323
diff changeset
   276
  visible \emph{perspective} of Isabelle/jEdit.  This is taken as a
e0fa4bd16c80 misc tuning;
wenzelm
parents: 54323
diff changeset
   277
  hint for document processing: the prover ensures that those parts of
e0fa4bd16c80 misc tuning;
wenzelm
parents: 54323
diff changeset
   278
  a theory where the user is looking are checked, while other parts
54330
wenzelm
parents: 54329
diff changeset
   279
  that are presently not required are ignored.  The perspective can be
wenzelm
parents: 54329
diff changeset
   280
  changed by opening or closing text area windows, or scrolling within
wenzelm
parents: 54329
diff changeset
   281
  some window.
54322
9d156ded3c2a more documentation;
wenzelm
parents: 54321
diff changeset
   282
54330
wenzelm
parents: 54329
diff changeset
   283
  The \emph{Theories} panel provides some further options to influence
wenzelm
parents: 54329
diff changeset
   284
  the process of continuous checking: it may be switched off globally
wenzelm
parents: 54329
diff changeset
   285
  to perform superficial processing of command syntax only.  It is
wenzelm
parents: 54329
diff changeset
   286
  also possible to indicate theory nodes as \emph{required} for
wenzelm
parents: 54329
diff changeset
   287
  continuous checking: this means such nodes and all their imports are
wenzelm
parents: 54329
diff changeset
   288
  always processed independently of the visibility status (if
wenzelm
parents: 54329
diff changeset
   289
  continuous checking is enabled).  Big theory libraries that are
wenzelm
parents: 54329
diff changeset
   290
  marked as required can have significant impact on performance,
wenzelm
parents: 54329
diff changeset
   291
  though.
54322
9d156ded3c2a more documentation;
wenzelm
parents: 54321
diff changeset
   292
9d156ded3c2a more documentation;
wenzelm
parents: 54321
diff changeset
   293
  \medskip Formal markup of checked theory content is turned into GUI
9d156ded3c2a more documentation;
wenzelm
parents: 54321
diff changeset
   294
  rendering, based on a standard repertoire known from IDEs for
9d156ded3c2a more documentation;
wenzelm
parents: 54321
diff changeset
   295
  programming languages: colors, icons, highlighting, squiggly
54329
e0fa4bd16c80 misc tuning;
wenzelm
parents: 54323
diff changeset
   296
  underline, tooltips, hyperlinks etc.  For outer syntax of
e0fa4bd16c80 misc tuning;
wenzelm
parents: 54323
diff changeset
   297
  Isabelle/Isar there is some traditional syntax-highlighting, based
e0fa4bd16c80 misc tuning;
wenzelm
parents: 54323
diff changeset
   298
  on static keyword tables and tokenization within the editor.  In
e0fa4bd16c80 misc tuning;
wenzelm
parents: 54323
diff changeset
   299
  contrast, the painting of inner syntax (term language etc.)  is
e0fa4bd16c80 misc tuning;
wenzelm
parents: 54323
diff changeset
   300
  based on semantic information that is reported dynamically from the
e0fa4bd16c80 misc tuning;
wenzelm
parents: 54323
diff changeset
   301
  logical context.  Thus the prover can provide additional markup to
e0fa4bd16c80 misc tuning;
wenzelm
parents: 54323
diff changeset
   302
  help the user understanding the meaning of the text, and to produce
e0fa4bd16c80 misc tuning;
wenzelm
parents: 54323
diff changeset
   303
  more text with some add-on tools (e.g.\ information messages by
e0fa4bd16c80 misc tuning;
wenzelm
parents: 54323
diff changeset
   304
  automated provers or disprovers running in the background).
54322
9d156ded3c2a more documentation;
wenzelm
parents: 54321
diff changeset
   305
9d156ded3c2a more documentation;
wenzelm
parents: 54321
diff changeset
   306
  Such formally annotated text can be explored further by using the
54329
e0fa4bd16c80 misc tuning;
wenzelm
parents: 54323
diff changeset
   307
  @{verbatim CONTROL} modifier key on Linux and Windows, or @{verbatim
54322
9d156ded3c2a more documentation;
wenzelm
parents: 54321
diff changeset
   308
  COMMAND} on Mac OS X.  Hovering with the mouse while the modifier is
9d156ded3c2a more documentation;
wenzelm
parents: 54321
diff changeset
   309
  pressed reveals \emph{tooltips} (grey box within the text with a
9d156ded3c2a more documentation;
wenzelm
parents: 54321
diff changeset
   310
  yellow popup) and/or \emph{hyperlinks} (dark grey rectangle within
54331
9e944630be0c more screenshots;
wenzelm
parents: 54330
diff changeset
   311
  the text).
9e944630be0c more screenshots;
wenzelm
parents: 54330
diff changeset
   312
9e944630be0c more screenshots;
wenzelm
parents: 54330
diff changeset
   313
  \begin{figure}[htbp]
9e944630be0c more screenshots;
wenzelm
parents: 54330
diff changeset
   314
  \begin{center}
9e944630be0c more screenshots;
wenzelm
parents: 54330
diff changeset
   315
  \includegraphics[scale=0.3]{popup1}
9e944630be0c more screenshots;
wenzelm
parents: 54330
diff changeset
   316
  \end{center}
9e944630be0c more screenshots;
wenzelm
parents: 54330
diff changeset
   317
  \caption{Hyperlink and tooltip for some formal entity.}
9e944630be0c more screenshots;
wenzelm
parents: 54330
diff changeset
   318
  \end{figure}
9e944630be0c more screenshots;
wenzelm
parents: 54330
diff changeset
   319
9e944630be0c more screenshots;
wenzelm
parents: 54330
diff changeset
   320
  Tooltip popups use the same rendering principles as the
54322
9d156ded3c2a more documentation;
wenzelm
parents: 54321
diff changeset
   321
  main text area, and further tooltips and/or hyperlinks may be
9d156ded3c2a more documentation;
wenzelm
parents: 54321
diff changeset
   322
  exposed recursively by the same mechanism.
54323
d521407f8d0f more documentation;
wenzelm
parents: 54322
diff changeset
   323
54331
9e944630be0c more screenshots;
wenzelm
parents: 54330
diff changeset
   324
  \begin{figure}[htbp]
9e944630be0c more screenshots;
wenzelm
parents: 54330
diff changeset
   325
  \begin{center}
9e944630be0c more screenshots;
wenzelm
parents: 54330
diff changeset
   326
  \includegraphics[scale=0.3]{popup2}
9e944630be0c more screenshots;
wenzelm
parents: 54330
diff changeset
   327
  \end{center}
9e944630be0c more screenshots;
wenzelm
parents: 54330
diff changeset
   328
  \caption{Nested tooltips over formal entities.}
9e944630be0c more screenshots;
wenzelm
parents: 54330
diff changeset
   329
  \end{figure}
54322
9d156ded3c2a more documentation;
wenzelm
parents: 54321
diff changeset
   330
*}
54321
41951f427ac7 more documentation;
wenzelm
parents: 54320
diff changeset
   331
41951f427ac7 more documentation;
wenzelm
parents: 54320
diff changeset
   332
53770
db362319d766 added/updated material from src/Tools/jEdit/README.html;
wenzelm
parents: 53769
diff changeset
   333
section {* Isabelle symbols and fonts *}
db362319d766 added/updated material from src/Tools/jEdit/README.html;
wenzelm
parents: 53769
diff changeset
   334
54323
d521407f8d0f more documentation;
wenzelm
parents: 54322
diff changeset
   335
text {* Isabelle sources consist of \emph{symbols} that extend plain
54330
wenzelm
parents: 54329
diff changeset
   336
  ASCII to allow infinitely many mathematical symbols within the
wenzelm
parents: 54329
diff changeset
   337
  formal sources.  This works without depending on particular
wenzelm
parents: 54329
diff changeset
   338
  encodings or varying Unicode standards \cite{Wenzel:2011:CICM}.
54323
d521407f8d0f more documentation;
wenzelm
parents: 54322
diff changeset
   339
d521407f8d0f more documentation;
wenzelm
parents: 54322
diff changeset
   340
  For the prover back-end, formal text consists of ASCII characters
d521407f8d0f more documentation;
wenzelm
parents: 54322
diff changeset
   341
  that are grouped according to some simple rules, e.g.\ as plain
d521407f8d0f more documentation;
wenzelm
parents: 54322
diff changeset
   342
  ``@{verbatim a}'' or symbolic ``@{verbatim "\<alpha>"}''.
d521407f8d0f more documentation;
wenzelm
parents: 54322
diff changeset
   343
54329
e0fa4bd16c80 misc tuning;
wenzelm
parents: 54323
diff changeset
   344
  For the editor front-end, a certain subset of symbols is rendered as
54330
wenzelm
parents: 54329
diff changeset
   345
  Unicode glyphs, in order to show ``@{verbatim "\<alpha>"}'' as ``@{text
wenzelm
parents: 54329
diff changeset
   346
  "\<alpha>"}'', for example.  This symbol interpretation is specified by the
wenzelm
parents: 54329
diff changeset
   347
  Isabelle system distribution (@{file "$ISABELLE_HOME/etc/symbols"})
wenzelm
parents: 54329
diff changeset
   348
  or by the user (@{verbatim "$ISABELLE_HOME_USER/etc/symbols"}).
54323
d521407f8d0f more documentation;
wenzelm
parents: 54322
diff changeset
   349
54329
e0fa4bd16c80 misc tuning;
wenzelm
parents: 54323
diff changeset
   350
  The appendix of \cite{isabelle-isar-ref} gives an overview of the
e0fa4bd16c80 misc tuning;
wenzelm
parents: 54323
diff changeset
   351
  standard interpretation of finitely many symbols from the infinite
54330
wenzelm
parents: 54329
diff changeset
   352
  collection.  Uninterpreted symbols are shown literally, e.g.\
wenzelm
parents: 54329
diff changeset
   353
  ``@{verbatim "\<foobar>"}''.
54323
d521407f8d0f more documentation;
wenzelm
parents: 54322
diff changeset
   354
d521407f8d0f more documentation;
wenzelm
parents: 54322
diff changeset
   355
  \medskip Technically, the Unicode view on Isabelle symbols is an
d521407f8d0f more documentation;
wenzelm
parents: 54322
diff changeset
   356
  \emph{encoding} in Isabelle/jEdit, which is called @{verbatim
d521407f8d0f more documentation;
wenzelm
parents: 54322
diff changeset
   357
  "UTF-8-Isabelle"} and enabled by default.  Sometimes such defaults
d521407f8d0f more documentation;
wenzelm
parents: 54322
diff changeset
   358
  are reset accidentally, or malformed UTF-8 sequences in the text
d521407f8d0f more documentation;
wenzelm
parents: 54322
diff changeset
   359
  force jEdit to fall back on a different encoding like @{verbatim
54330
wenzelm
parents: 54329
diff changeset
   360
  "ISO-8859-15"}.  In that case, verbatim ``@{verbatim "\<alpha>"}'' will be
wenzelm
parents: 54329
diff changeset
   361
  shown in the text buffer instead of its Unicode rendering ``@{text
wenzelm
parents: 54329
diff changeset
   362
  "\<alpha>"}''.  The jEdit menu operation \emph{File / Reload with Encoding
wenzelm
parents: 54329
diff changeset
   363
  / UTF-8-Isabelle} helps to resolve such problems, potentially after
54323
d521407f8d0f more documentation;
wenzelm
parents: 54322
diff changeset
   364
  repairing malformed parts of the text.
53770
db362319d766 added/updated material from src/Tools/jEdit/README.html;
wenzelm
parents: 53769
diff changeset
   365
54329
e0fa4bd16c80 misc tuning;
wenzelm
parents: 54323
diff changeset
   366
  \medskip Correct rendering via Unicode requires a font that contains
e0fa4bd16c80 misc tuning;
wenzelm
parents: 54323
diff changeset
   367
  glyphs for the corresponding codepoints.  Most system fonts lack
e0fa4bd16c80 misc tuning;
wenzelm
parents: 54323
diff changeset
   368
  that, so Isabelle/jEdit prefers its own application font @{verbatim
54330
wenzelm
parents: 54329
diff changeset
   369
  IsabelleText}, which ensures that standard collection of Isabelle
wenzelm
parents: 54329
diff changeset
   370
  symbols are actually seen on the screen (or printer).
54329
e0fa4bd16c80 misc tuning;
wenzelm
parents: 54323
diff changeset
   371
54330
wenzelm
parents: 54329
diff changeset
   372
  Note that a Java/AWT/Swing application can load additional fonts
wenzelm
parents: 54329
diff changeset
   373
  only if they are not installed as system font already!  This means
wenzelm
parents: 54329
diff changeset
   374
  some old version of @{verbatim IsabelleText} that happens to be
wenzelm
parents: 54329
diff changeset
   375
  already present prevents Isabelle/jEdit from using its current
wenzelm
parents: 54329
diff changeset
   376
  bundled version.  This might result in missing glyphs (black
wenzelm
parents: 54329
diff changeset
   377
  rectangles), since obsolete versions of @{verbatim IsabelleText}
wenzelm
parents: 54329
diff changeset
   378
  lack recent improvements of Unicode glyph coverage.  This problem
wenzelm
parents: 54329
diff changeset
   379
  can be avoided by refraining to ``install'' any version of
wenzelm
parents: 54329
diff changeset
   380
  @{verbatim IsabelleText} in the first place.
54329
e0fa4bd16c80 misc tuning;
wenzelm
parents: 54323
diff changeset
   381
54323
d521407f8d0f more documentation;
wenzelm
parents: 54322
diff changeset
   382
  \medskip \paragraph{Input methods.} In principle, Isabelle/jEdit
d521407f8d0f more documentation;
wenzelm
parents: 54322
diff changeset
   383
  could delegate the problem to produce Isabelle symbols in their
d521407f8d0f more documentation;
wenzelm
parents: 54322
diff changeset
   384
  Unicode rendering to the underlying operating system and its
54329
e0fa4bd16c80 misc tuning;
wenzelm
parents: 54323
diff changeset
   385
  \emph{input methods}.  Regular jEdit also provides various ways to
e0fa4bd16c80 misc tuning;
wenzelm
parents: 54323
diff changeset
   386
  work with \emph{abbreviations} to produce certain non-ASCII
e0fa4bd16c80 misc tuning;
wenzelm
parents: 54323
diff changeset
   387
  characters.  Since none of these standard input methods work
e0fa4bd16c80 misc tuning;
wenzelm
parents: 54323
diff changeset
   388
  satisfactorily for the mathematical characters required for
e0fa4bd16c80 misc tuning;
wenzelm
parents: 54323
diff changeset
   389
  Isabelle, various specific Isabelle/jEdit mechanisms are provided.
54323
d521407f8d0f more documentation;
wenzelm
parents: 54322
diff changeset
   390
54329
e0fa4bd16c80 misc tuning;
wenzelm
parents: 54323
diff changeset
   391
  Here is a summary for practically relevant input methods for
54330
wenzelm
parents: 54329
diff changeset
   392
  Isabelle symbols:
54323
d521407f8d0f more documentation;
wenzelm
parents: 54322
diff changeset
   393
53770
db362319d766 added/updated material from src/Tools/jEdit/README.html;
wenzelm
parents: 53769
diff changeset
   394
  \begin{enumerate}
54323
d521407f8d0f more documentation;
wenzelm
parents: 54322
diff changeset
   395
54330
wenzelm
parents: 54329
diff changeset
   396
  \item The \emph{Symbols} panel with some GUI buttons to insert
54323
d521407f8d0f more documentation;
wenzelm
parents: 54322
diff changeset
   397
  certain symbols in the text buffer.  There are also tooltips to
d521407f8d0f more documentation;
wenzelm
parents: 54322
diff changeset
   398
  reveal to official Isabelle representation with some additional
d521407f8d0f more documentation;
wenzelm
parents: 54322
diff changeset
   399
  information about \emph{symbol abbreviations} (see below).
d521407f8d0f more documentation;
wenzelm
parents: 54322
diff changeset
   400
d521407f8d0f more documentation;
wenzelm
parents: 54322
diff changeset
   401
  \item Copy / paste from decoded source files: text that is rendered
54330
wenzelm
parents: 54329
diff changeset
   402
  as Unicode already can be re-used to produce further such text.
54323
d521407f8d0f more documentation;
wenzelm
parents: 54322
diff changeset
   403
  This also works between different applications, e.g.\ Isabelle/jEdit
54329
e0fa4bd16c80 misc tuning;
wenzelm
parents: 54323
diff changeset
   404
  and some web browser or mail client, as long as the same Unicode
e0fa4bd16c80 misc tuning;
wenzelm
parents: 54323
diff changeset
   405
  view on Isabelle symbols is used uniformly.
54323
d521407f8d0f more documentation;
wenzelm
parents: 54322
diff changeset
   406
54329
e0fa4bd16c80 misc tuning;
wenzelm
parents: 54323
diff changeset
   407
  \item Copy / paste from prover output within Isabelle/jEdit.  The
e0fa4bd16c80 misc tuning;
wenzelm
parents: 54323
diff changeset
   408
  same principles as for text buffers apply, but note that \emph{copy}
e0fa4bd16c80 misc tuning;
wenzelm
parents: 54323
diff changeset
   409
  in Isabelle \emph{Output} works via the keyboard shortcut @{verbatim
54330
wenzelm
parents: 54329
diff changeset
   410
  "C+c"}, not jEdit menu actions.
54323
d521407f8d0f more documentation;
wenzelm
parents: 54322
diff changeset
   411
d521407f8d0f more documentation;
wenzelm
parents: 54322
diff changeset
   412
  \item Completion provided by Isabelle plugin (see
d521407f8d0f more documentation;
wenzelm
parents: 54322
diff changeset
   413
  \secref{sec:completion}).  Isabelle symbols have a canonical name
d521407f8d0f more documentation;
wenzelm
parents: 54322
diff changeset
   414
  and optional abbreviations.  This can be used with the text
d521407f8d0f more documentation;
wenzelm
parents: 54322
diff changeset
   415
  completion mechanism of Isabelle/jEdit, to replace a prefix of the
54329
e0fa4bd16c80 misc tuning;
wenzelm
parents: 54323
diff changeset
   416
  actual symbol like @{verbatim "\<lambda>"}, or its backslashed name
e0fa4bd16c80 misc tuning;
wenzelm
parents: 54323
diff changeset
   417
  @{verbatim "\\"}@{verbatim "lambda"}, or its ASCII abbreviation
54330
wenzelm
parents: 54329
diff changeset
   418
  @{verbatim "%"} by the Unicode rendering.
54323
d521407f8d0f more documentation;
wenzelm
parents: 54322
diff changeset
   419
d521407f8d0f more documentation;
wenzelm
parents: 54322
diff changeset
   420
  The following table is an extract of the information provided by the
54329
e0fa4bd16c80 misc tuning;
wenzelm
parents: 54323
diff changeset
   421
  standard @{file "$ISABELLE_HOME/etc/symbols"} file:
53770
db362319d766 added/updated material from src/Tools/jEdit/README.html;
wenzelm
parents: 53769
diff changeset
   422
db362319d766 added/updated material from src/Tools/jEdit/README.html;
wenzelm
parents: 53769
diff changeset
   423
  \medskip
db362319d766 added/updated material from src/Tools/jEdit/README.html;
wenzelm
parents: 53769
diff changeset
   424
  \begin{tabular}{lll}
54329
e0fa4bd16c80 misc tuning;
wenzelm
parents: 54323
diff changeset
   425
    \textbf{symbol} & \textbf{abbreviation} & \textbf{backslashed name} \\\hline
53771
wenzelm
parents: 53770
diff changeset
   426
    @{text "\<lambda>"}   & @{verbatim "%"}     &  @{verbatim "\\lambda"}         \\
wenzelm
parents: 53770
diff changeset
   427
    @{text "\<Rightarrow>"}  & @{verbatim "=>"}    &  @{verbatim "\\Rightarrow"}     \\
wenzelm
parents: 53770
diff changeset
   428
    @{text "\<Longrightarrow>"} & @{verbatim "==>"}   &  @{verbatim "\\Longrightarrow"} \\
53770
db362319d766 added/updated material from src/Tools/jEdit/README.html;
wenzelm
parents: 53769
diff changeset
   429
53771
wenzelm
parents: 53770
diff changeset
   430
    @{text "\<And>"}  & @{verbatim "!!"}    &  @{verbatim "\\And"}            \\
wenzelm
parents: 53770
diff changeset
   431
    @{text "\<equiv>"}  & @{verbatim "=="}    &  @{verbatim "\\equiv"}          \\
53770
db362319d766 added/updated material from src/Tools/jEdit/README.html;
wenzelm
parents: 53769
diff changeset
   432
53771
wenzelm
parents: 53770
diff changeset
   433
    @{text "\<forall>"}   & @{verbatim "!"}     &  @{verbatim "\\forall"}         \\
wenzelm
parents: 53770
diff changeset
   434
    @{text "\<exists>"}   & @{verbatim "?"}     &  @{verbatim "\\exists"}         \\
wenzelm
parents: 53770
diff changeset
   435
    @{text "\<longrightarrow>"} & @{verbatim "-->"}   &  @{verbatim "\\longrightarrow"} \\
wenzelm
parents: 53770
diff changeset
   436
    @{text "\<and>"}   & @{verbatim "&"}     &  @{verbatim "\\and"}            \\
wenzelm
parents: 53770
diff changeset
   437
    @{text "\<or>"}   & @{verbatim "|"}     &  @{verbatim "\\or"}             \\
wenzelm
parents: 53770
diff changeset
   438
    @{text "\<not>"}   & @{verbatim "~"}     &  @{verbatim "\\not"}            \\
wenzelm
parents: 53770
diff changeset
   439
    @{text "\<noteq>"}   & @{verbatim "~="}    &  @{verbatim "\\noteq"}          \\
wenzelm
parents: 53770
diff changeset
   440
    @{text "\<in>"}   & @{verbatim ":"}     &  @{verbatim "\\in"}             \\
wenzelm
parents: 53770
diff changeset
   441
    @{text "\<notin>"}   & @{verbatim "~:"}    &  @{verbatim "\\notin"}          \\
53770
db362319d766 added/updated material from src/Tools/jEdit/README.html;
wenzelm
parents: 53769
diff changeset
   442
  \end{tabular}
54329
e0fa4bd16c80 misc tuning;
wenzelm
parents: 54323
diff changeset
   443
  \medskip
e0fa4bd16c80 misc tuning;
wenzelm
parents: 54323
diff changeset
   444
e0fa4bd16c80 misc tuning;
wenzelm
parents: 54323
diff changeset
   445
  Note that the above abbreviations refer to the input method. The
e0fa4bd16c80 misc tuning;
wenzelm
parents: 54323
diff changeset
   446
  logical notation provides ASCII alternatives that often coincide,
e0fa4bd16c80 misc tuning;
wenzelm
parents: 54323
diff changeset
   447
  but deviate occasionally.  Writing formal sources directly with
e0fa4bd16c80 misc tuning;
wenzelm
parents: 54323
diff changeset
   448
  ASCII replacement notation like @{verbatim "!"} or @{verbatim "ALL"}
54330
wenzelm
parents: 54329
diff changeset
   449
  is considered old-fashioned in 2013!
53770
db362319d766 added/updated material from src/Tools/jEdit/README.html;
wenzelm
parents: 53769
diff changeset
   450
db362319d766 added/updated material from src/Tools/jEdit/README.html;
wenzelm
parents: 53769
diff changeset
   451
  \end{enumerate}
db362319d766 added/updated material from src/Tools/jEdit/README.html;
wenzelm
parents: 53769
diff changeset
   452
54329
e0fa4bd16c80 misc tuning;
wenzelm
parents: 54323
diff changeset
   453
  Raw Unicode characters within prover source files should be
54323
d521407f8d0f more documentation;
wenzelm
parents: 54322
diff changeset
   454
  restricted to informal parts, e.g.\ to write text in non-latin
d521407f8d0f more documentation;
wenzelm
parents: 54322
diff changeset
   455
  alphabets.  Mathematical symbols should be defined via the official
54331
9e944630be0c more screenshots;
wenzelm
parents: 54330
diff changeset
   456
  rendering tables, to avoid problems with portability and long-term
54323
d521407f8d0f more documentation;
wenzelm
parents: 54322
diff changeset
   457
  storage of formal text.
53770
db362319d766 added/updated material from src/Tools/jEdit/README.html;
wenzelm
parents: 53769
diff changeset
   458
54323
d521407f8d0f more documentation;
wenzelm
parents: 54322
diff changeset
   459
  \paragraph{Control symbols.} There are some special control symbols
54329
e0fa4bd16c80 misc tuning;
wenzelm
parents: 54323
diff changeset
   460
  to modify the style of a single symbol (without nesting). Control
e0fa4bd16c80 misc tuning;
wenzelm
parents: 54323
diff changeset
   461
  symbols may be applied to a region of selected text, either using
e0fa4bd16c80 misc tuning;
wenzelm
parents: 54323
diff changeset
   462
  the \emph{Symbols} panel or keyboard shortcuts; these editor
e0fa4bd16c80 misc tuning;
wenzelm
parents: 54323
diff changeset
   463
  operations produce a separate control symbol for each symbol in the
54330
wenzelm
parents: 54329
diff changeset
   464
  text, in order to make the whole text appear in a certain style.
53770
db362319d766 added/updated material from src/Tools/jEdit/README.html;
wenzelm
parents: 53769
diff changeset
   465
db362319d766 added/updated material from src/Tools/jEdit/README.html;
wenzelm
parents: 53769
diff changeset
   466
  \medskip
db362319d766 added/updated material from src/Tools/jEdit/README.html;
wenzelm
parents: 53769
diff changeset
   467
  \begin{tabular}{lll}
54321
41951f427ac7 more documentation;
wenzelm
parents: 54320
diff changeset
   468
    \textbf{symbol}      & style       & keyboard shortcut \\\hline
54323
d521407f8d0f more documentation;
wenzelm
parents: 54322
diff changeset
   469
    @{verbatim "\<^sup>"} & superscript & @{verbatim "C+e UP"} \\
d521407f8d0f more documentation;
wenzelm
parents: 54322
diff changeset
   470
    @{verbatim "\<^sub>"} & subscript   & @{verbatim "C+e DOWN"} \\
d521407f8d0f more documentation;
wenzelm
parents: 54322
diff changeset
   471
    @{verbatim "\<^bold>"} & bold face  & @{verbatim "C+e RIGHT"} \\
53770
db362319d766 added/updated material from src/Tools/jEdit/README.html;
wenzelm
parents: 53769
diff changeset
   472
                          & reset      & @{verbatim "C+e LEFT"} \\
db362319d766 added/updated material from src/Tools/jEdit/README.html;
wenzelm
parents: 53769
diff changeset
   473
  \end{tabular}
54323
d521407f8d0f more documentation;
wenzelm
parents: 54322
diff changeset
   474
d521407f8d0f more documentation;
wenzelm
parents: 54322
diff changeset
   475
  It is also possible to complete on @{verbatim "\\"}@{verbatim sup},
d521407f8d0f more documentation;
wenzelm
parents: 54322
diff changeset
   476
  @{verbatim "\\"}@{verbatim sub}, @{verbatim "\\"}@{verbatim bold} as
d521407f8d0f more documentation;
wenzelm
parents: 54322
diff changeset
   477
  for regular symbols.
53770
db362319d766 added/updated material from src/Tools/jEdit/README.html;
wenzelm
parents: 53769
diff changeset
   478
*}
db362319d766 added/updated material from src/Tools/jEdit/README.html;
wenzelm
parents: 53769
diff changeset
   479
db362319d766 added/updated material from src/Tools/jEdit/README.html;
wenzelm
parents: 53769
diff changeset
   480
54323
d521407f8d0f more documentation;
wenzelm
parents: 54322
diff changeset
   481
section {* Text completion \label{sec:completion} *}
53769
036e80175bdd basic setup for Isabelle/jEdit documentation;
wenzelm
parents:
diff changeset
   482
53981
1f4d6870b7b2 more on text completion;
wenzelm
parents: 53886
diff changeset
   483
text {*
1f4d6870b7b2 more on text completion;
wenzelm
parents: 53886
diff changeset
   484
  Text completion works via some light-weight GUI popup, which is triggered by
1f4d6870b7b2 more on text completion;
wenzelm
parents: 53886
diff changeset
   485
  keyboard events during the normal editing process in the main jEdit text
1f4d6870b7b2 more on text completion;
wenzelm
parents: 53886
diff changeset
   486
  area and a few additional text fields. The popup interprets special keys:
1f4d6870b7b2 more on text completion;
wenzelm
parents: 53886
diff changeset
   487
  @{verbatim TAB}, @{verbatim ESCAPE}, @{verbatim UP}, @{verbatim DOWN},
1f4d6870b7b2 more on text completion;
wenzelm
parents: 53886
diff changeset
   488
  @{verbatim PAGE_UP}, @{verbatim PAGE_DOWN}. All other key events are passed
1f4d6870b7b2 more on text completion;
wenzelm
parents: 53886
diff changeset
   489
  to the jEdit text area --- this allows to ignore unwanted completions most
1f4d6870b7b2 more on text completion;
wenzelm
parents: 53886
diff changeset
   490
  of the time and continue typing quickly.
1f4d6870b7b2 more on text completion;
wenzelm
parents: 53886
diff changeset
   491
1f4d6870b7b2 more on text completion;
wenzelm
parents: 53886
diff changeset
   492
  Various Isabelle plugin options control the popup behavior and immediate
1f4d6870b7b2 more on text completion;
wenzelm
parents: 53886
diff changeset
   493
  insertion into buffer.
1f4d6870b7b2 more on text completion;
wenzelm
parents: 53886
diff changeset
   494
54320
wenzelm
parents: 54037
diff changeset
   495
  Isabelle Symbols are completed in backslashed forms, e.g.\ @{verbatim
53981
1f4d6870b7b2 more on text completion;
wenzelm
parents: 53886
diff changeset
   496
  "\\"}@{verbatim "forall"} or @{verbatim "\<forall>"} that both produce the Isabelle
53982
wenzelm
parents: 53981
diff changeset
   497
  symbol @{text "\<forall>"} in its Unicode rendering. Alternatively, symbol
wenzelm
parents: 53981
diff changeset
   498
  abbreviations may be used as specified in @{file
wenzelm
parents: 53981
diff changeset
   499
  "$ISABELLE_HOME/etc/symbols"}.
53981
1f4d6870b7b2 more on text completion;
wenzelm
parents: 53886
diff changeset
   500
1f4d6870b7b2 more on text completion;
wenzelm
parents: 53886
diff changeset
   501
  \emph{Explicit completion} works via standard jEdit shortcut @{verbatim
1f4d6870b7b2 more on text completion;
wenzelm
parents: 53886
diff changeset
   502
  "C+b"}, which is remapped to action @{verbatim "isabelle.complete"}, with a
1f4d6870b7b2 more on text completion;
wenzelm
parents: 53886
diff changeset
   503
  fall-back on regular @{verbatim "complete-word"} for non-Isabelle buffers.
1f4d6870b7b2 more on text completion;
wenzelm
parents: 53886
diff changeset
   504
1f4d6870b7b2 more on text completion;
wenzelm
parents: 53886
diff changeset
   505
  \emph{Implicit completion} works via keyboard input on text area, with popup
1f4d6870b7b2 more on text completion;
wenzelm
parents: 53886
diff changeset
   506
  or immediate insertion into buffer. Plain words require at least 3
1f4d6870b7b2 more on text completion;
wenzelm
parents: 53886
diff changeset
   507
  characters to be completed.
1f4d6870b7b2 more on text completion;
wenzelm
parents: 53886
diff changeset
   508
1f4d6870b7b2 more on text completion;
wenzelm
parents: 53886
diff changeset
   509
  \emph{Immediate completion} means the (unique) replacement text is inserted
1f4d6870b7b2 more on text completion;
wenzelm
parents: 53886
diff changeset
   510
  into the buffer without popup. This mode ignores plain words and requires
1f4d6870b7b2 more on text completion;
wenzelm
parents: 53886
diff changeset
   511
  more than one characters for symbol abbreviations. Otherwise it falls back
1f4d6870b7b2 more on text completion;
wenzelm
parents: 53886
diff changeset
   512
  on completion popup.
1f4d6870b7b2 more on text completion;
wenzelm
parents: 53886
diff changeset
   513
*}
53769
036e80175bdd basic setup for Isabelle/jEdit documentation;
wenzelm
parents:
diff changeset
   514
53770
db362319d766 added/updated material from src/Tools/jEdit/README.html;
wenzelm
parents: 53769
diff changeset
   515
54329
e0fa4bd16c80 misc tuning;
wenzelm
parents: 54323
diff changeset
   516
chapter {* Known problems and workarounds \label{sec:problems} *}
53770
db362319d766 added/updated material from src/Tools/jEdit/README.html;
wenzelm
parents: 53769
diff changeset
   517
db362319d766 added/updated material from src/Tools/jEdit/README.html;
wenzelm
parents: 53769
diff changeset
   518
text {*
db362319d766 added/updated material from src/Tools/jEdit/README.html;
wenzelm
parents: 53769
diff changeset
   519
  \begin{itemize}
db362319d766 added/updated material from src/Tools/jEdit/README.html;
wenzelm
parents: 53769
diff changeset
   520
db362319d766 added/updated material from src/Tools/jEdit/README.html;
wenzelm
parents: 53769
diff changeset
   521
  \item \textbf{Problem:} Lack of dependency management for auxiliary files
53771
wenzelm
parents: 53770
diff changeset
   522
  that contribute to a theory (e.g.\ @{command ML_file}).
53770
db362319d766 added/updated material from src/Tools/jEdit/README.html;
wenzelm
parents: 53769
diff changeset
   523
54330
wenzelm
parents: 54329
diff changeset
   524
  \textbf{Workaround:} Re-load files manually within the prover, by
wenzelm
parents: 54329
diff changeset
   525
  editing corresponding command in the text.
53770
db362319d766 added/updated material from src/Tools/jEdit/README.html;
wenzelm
parents: 53769
diff changeset
   526
db362319d766 added/updated material from src/Tools/jEdit/README.html;
wenzelm
parents: 53769
diff changeset
   527
  \item \textbf{Problem:} Odd behavior of some diagnostic commands with
db362319d766 added/updated material from src/Tools/jEdit/README.html;
wenzelm
parents: 53769
diff changeset
   528
  global side-effects, like writing a physical file.
db362319d766 added/updated material from src/Tools/jEdit/README.html;
wenzelm
parents: 53769
diff changeset
   529
db362319d766 added/updated material from src/Tools/jEdit/README.html;
wenzelm
parents: 53769
diff changeset
   530
  \textbf{Workaround:} Avoid such commands.
db362319d766 added/updated material from src/Tools/jEdit/README.html;
wenzelm
parents: 53769
diff changeset
   531
db362319d766 added/updated material from src/Tools/jEdit/README.html;
wenzelm
parents: 53769
diff changeset
   532
  \item \textbf{Problem:} No way to delete document nodes from the overall
db362319d766 added/updated material from src/Tools/jEdit/README.html;
wenzelm
parents: 53769
diff changeset
   533
  collection of theories.
db362319d766 added/updated material from src/Tools/jEdit/README.html;
wenzelm
parents: 53769
diff changeset
   534
54329
e0fa4bd16c80 misc tuning;
wenzelm
parents: 54323
diff changeset
   535
  \textbf{Workaround:} Ignore unused files.  Restart whole
e0fa4bd16c80 misc tuning;
wenzelm
parents: 54323
diff changeset
   536
  Isabelle/jEdit session in worst-case situation.
53770
db362319d766 added/updated material from src/Tools/jEdit/README.html;
wenzelm
parents: 53769
diff changeset
   537
54330
wenzelm
parents: 54329
diff changeset
   538
  \item \textbf{Problem:} Keyboard shortcuts @{verbatim "C+PLUS"} and
wenzelm
parents: 54329
diff changeset
   539
  @{verbatim "C+MINUS"} for adjusting the editor font size depend on
wenzelm
parents: 54329
diff changeset
   540
  platform details and national keyboards.
wenzelm
parents: 54329
diff changeset
   541
wenzelm
parents: 54329
diff changeset
   542
  \textbf{Workaround:} Use numeric keypad or rebind keys in the
wenzelm
parents: 54329
diff changeset
   543
  jEdit Shortcuts options dialog.
wenzelm
parents: 54329
diff changeset
   544
53886
c83727c7a510 updated documentation concerning MacOSX plugin 1.3;
wenzelm
parents: 53773
diff changeset
   545
  \item \textbf{Problem:} The Mac OS X keyboard shortcut @{verbatim
54349
fd5ddf2bce76 more on problems and workarounds;
wenzelm
parents: 54348
diff changeset
   546
  "COMMAND+COMMA"} for application \emph{Preferences} is in conflict
fd5ddf2bce76 more on problems and workarounds;
wenzelm
parents: 54348
diff changeset
   547
  with the jEdit default shortcut for \emph{Incremental Search Bar}
fd5ddf2bce76 more on problems and workarounds;
wenzelm
parents: 54348
diff changeset
   548
  (action @{verbatim "quick-search"}).
53770
db362319d766 added/updated material from src/Tools/jEdit/README.html;
wenzelm
parents: 53769
diff changeset
   549
53886
c83727c7a510 updated documentation concerning MacOSX plugin 1.3;
wenzelm
parents: 53773
diff changeset
   550
  \textbf{Workaround:} Remap in jEdit manually according to national
c83727c7a510 updated documentation concerning MacOSX plugin 1.3;
wenzelm
parents: 53773
diff changeset
   551
  keyboard, e.g.\ @{verbatim "COMMAND+SLASH"} on English ones.
53770
db362319d766 added/updated material from src/Tools/jEdit/README.html;
wenzelm
parents: 53769
diff changeset
   552
54349
fd5ddf2bce76 more on problems and workarounds;
wenzelm
parents: 54348
diff changeset
   553
  \item \textbf{Problem:} Mac OS X system fonts sometimes lead to
fd5ddf2bce76 more on problems and workarounds;
wenzelm
parents: 54348
diff changeset
   554
  character drop-outs in the main text area.
fd5ddf2bce76 more on problems and workarounds;
wenzelm
parents: 54348
diff changeset
   555
fd5ddf2bce76 more on problems and workarounds;
wenzelm
parents: 54348
diff changeset
   556
  \textbf{Workaround:} Use the default @{verbatim IsabelleText} font.
fd5ddf2bce76 more on problems and workarounds;
wenzelm
parents: 54348
diff changeset
   557
  (Do not install that font on the system.)
fd5ddf2bce76 more on problems and workarounds;
wenzelm
parents: 54348
diff changeset
   558
54329
e0fa4bd16c80 misc tuning;
wenzelm
parents: 54323
diff changeset
   559
  \item \textbf{Problem:} Some Linux / X11 input methods such as IBus
54330
wenzelm
parents: 54329
diff changeset
   560
  tend to disrupt key event handling of Java/AWT/Swing.
53770
db362319d766 added/updated material from src/Tools/jEdit/README.html;
wenzelm
parents: 53769
diff changeset
   561
54329
e0fa4bd16c80 misc tuning;
wenzelm
parents: 54323
diff changeset
   562
  \textbf{Workaround:} Do not use input methods, reset the environment
e0fa4bd16c80 misc tuning;
wenzelm
parents: 54323
diff changeset
   563
  variable @{verbatim XMODIFIERS} within Isabelle settings (default in
e0fa4bd16c80 misc tuning;
wenzelm
parents: 54323
diff changeset
   564
  Isabelle2013-1).
e0fa4bd16c80 misc tuning;
wenzelm
parents: 54323
diff changeset
   565
e0fa4bd16c80 misc tuning;
wenzelm
parents: 54323
diff changeset
   566
  \item \textbf{Problem:} Some Linux / X11 window managers that are
e0fa4bd16c80 misc tuning;
wenzelm
parents: 54323
diff changeset
   567
  not ``re-parenting'' cause problems with additional windows opened
54331
9e944630be0c more screenshots;
wenzelm
parents: 54330
diff changeset
   568
  by Java. This affects either historic or neo-minimalistic window
9e944630be0c more screenshots;
wenzelm
parents: 54330
diff changeset
   569
  managers like @{verbatim awesome} or @{verbatim xmonad}.
54329
e0fa4bd16c80 misc tuning;
wenzelm
parents: 54323
diff changeset
   570
e0fa4bd16c80 misc tuning;
wenzelm
parents: 54323
diff changeset
   571
  \textbf{Workaround:} Use regular re-parenting window manager.
e0fa4bd16c80 misc tuning;
wenzelm
parents: 54323
diff changeset
   572
e0fa4bd16c80 misc tuning;
wenzelm
parents: 54323
diff changeset
   573
  \item \textbf{Problem:} Recent forks of Linux / X11 window managers
e0fa4bd16c80 misc tuning;
wenzelm
parents: 54323
diff changeset
   574
  and desktop environments (variants of Gnome) disrupt the handling of
e0fa4bd16c80 misc tuning;
wenzelm
parents: 54323
diff changeset
   575
  menu popups and mouse positions of Java/AWT/Swing.
e0fa4bd16c80 misc tuning;
wenzelm
parents: 54323
diff changeset
   576
e0fa4bd16c80 misc tuning;
wenzelm
parents: 54323
diff changeset
   577
  \textbf{Workaround:} Use mainstream versions of Linux desktops.
53770
db362319d766 added/updated material from src/Tools/jEdit/README.html;
wenzelm
parents: 53769
diff changeset
   578
54349
fd5ddf2bce76 more on problems and workarounds;
wenzelm
parents: 54348
diff changeset
   579
  \item \textbf{Problem:} Full-screen mode via jEdit action @{verbatim
fd5ddf2bce76 more on problems and workarounds;
wenzelm
parents: 54348
diff changeset
   580
  "toggle-full-screen"} (default shortcut @{verbatim F11}) works on
fd5ddf2bce76 more on problems and workarounds;
wenzelm
parents: 54348
diff changeset
   581
  Windows, but not on Mac OS X or various Linux / X11 window managers.
fd5ddf2bce76 more on problems and workarounds;
wenzelm
parents: 54348
diff changeset
   582
fd5ddf2bce76 more on problems and workarounds;
wenzelm
parents: 54348
diff changeset
   583
  \textbf{Workaround:} Use native full-screen control of the window
fd5ddf2bce76 more on problems and workarounds;
wenzelm
parents: 54348
diff changeset
   584
  manager, if available (notably on Mac OS X).
fd5ddf2bce76 more on problems and workarounds;
wenzelm
parents: 54348
diff changeset
   585
fd5ddf2bce76 more on problems and workarounds;
wenzelm
parents: 54348
diff changeset
   586
  \item \textbf{Problem:} Full-screen mode and dockable windows in
fd5ddf2bce76 more on problems and workarounds;
wenzelm
parents: 54348
diff changeset
   587
  \emph{floating} state may lead to confusion about window placement
fd5ddf2bce76 more on problems and workarounds;
wenzelm
parents: 54348
diff changeset
   588
  (depending on platform characteristics).
fd5ddf2bce76 more on problems and workarounds;
wenzelm
parents: 54348
diff changeset
   589
fd5ddf2bce76 more on problems and workarounds;
wenzelm
parents: 54348
diff changeset
   590
  \textbf{Workaround:} Avoid this combination.
fd5ddf2bce76 more on problems and workarounds;
wenzelm
parents: 54348
diff changeset
   591
53770
db362319d766 added/updated material from src/Tools/jEdit/README.html;
wenzelm
parents: 53769
diff changeset
   592
  \end{itemize}
db362319d766 added/updated material from src/Tools/jEdit/README.html;
wenzelm
parents: 53769
diff changeset
   593
*}
db362319d766 added/updated material from src/Tools/jEdit/README.html;
wenzelm
parents: 53769
diff changeset
   594
53769
036e80175bdd basic setup for Isabelle/jEdit documentation;
wenzelm
parents:
diff changeset
   595
end