src/Doc/JEdit/JEdit.thy
changeset 57335 f911187ada43
parent 57334 54c6b73774d2
child 57336 e13c5dd9c7de
equal deleted inserted replaced
57334:54c6b73774d2 57335:f911187ada43
   168 subsection {* Options *}
   168 subsection {* Options *}
   169 
   169 
   170 text {* Both jEdit and Isabelle have distinctive management of
   170 text {* Both jEdit and Isabelle have distinctive management of
   171   persistent options.
   171   persistent options.
   172 
   172 
   173   Regular jEdit options are accessible via the dialogs \emph{Utilities /
   173   Regular jEdit options are accessible via the dialogs \emph{Utilities~/
   174   Global Options} or \emph{Plugins / Plugin Options}, with a second chance to
   174   Global Options} or \emph{Plugins~/ Plugin Options}, with a second chance to
   175   flip the two within the central options dialog. Changes are stored in
   175   flip the two within the central options dialog. Changes are stored in
   176   @{file_unchecked "$ISABELLE_HOME_USER/jedit/properties"} and
   176   @{file_unchecked "$ISABELLE_HOME_USER/jedit/properties"} and
   177   @{file_unchecked "$ISABELLE_HOME_USER/jedit/keymaps"}.
   177   @{file_unchecked "$ISABELLE_HOME_USER/jedit/keymaps"}.
   178 
   178 
   179   Isabelle system options are managed by Isabelle/Scala and changes are stored
   179   Isabelle system options are managed by Isabelle/Scala and changes are stored
   181   other jEdit properties. See also \cite{isabelle-sys}, especially the
   181   other jEdit properties. See also \cite{isabelle-sys}, especially the
   182   coverage of sessions and command-line tools like @{tool build} or @{tool
   182   coverage of sessions and command-line tools like @{tool build} or @{tool
   183   options}.
   183   options}.
   184 
   184 
   185   Those Isabelle options that are declared as \textbf{public} are configurable
   185   Those Isabelle options that are declared as \textbf{public} are configurable
   186   in Isabelle/jEdit via \emph{Plugin Options / Isabelle / General}. Moreover,
   186   in Isabelle/jEdit via \emph{Plugin Options~/ Isabelle~/ General}. Moreover,
   187   there are various options for rendering of document content, which are
   187   there are various options for rendering of document content, which are
   188   configurable via \emph{Plugin Options / Isabelle / Rendering}. Thus
   188   configurable via \emph{Plugin Options~/ Isabelle~/ Rendering}. Thus
   189   \emph{Plugin Options / Isabelle} in jEdit provides a view on a subset of
   189   \emph{Plugin Options~/ Isabelle} in jEdit provides a view on a subset of
   190   Isabelle system options. Note that some of these options affect general
   190   Isabelle system options. Note that some of these options affect general
   191   parameters that are relevant outside Isabelle/jEdit as well, e.g.\
   191   parameters that are relevant outside Isabelle/jEdit as well, e.g.\
   192   @{system_option threads} or @{system_option parallel_proofs} for the
   192   @{system_option threads} or @{system_option parallel_proofs} for the
   193   Isabelle build tool \cite{isabelle-sys}, but it is possible to use the
   193   Isabelle build tool \cite{isabelle-sys}, but it is possible to use the
   194   settings variable @{setting ISABELLE_BUILD_OPTIONS} to change defaults for
   194   settings variable @{setting ISABELLE_BUILD_OPTIONS} to change defaults for
   203 
   203 
   204 subsection {* Keymaps *}
   204 subsection {* Keymaps *}
   205 
   205 
   206 text {* Keyboard shortcuts used to be managed as jEdit properties in
   206 text {* Keyboard shortcuts used to be managed as jEdit properties in
   207   the past, but recent versions (2013) have a separate concept of
   207   the past, but recent versions (2013) have a separate concept of
   208   \emph{keymap} that is configurable via \emph{Global Options /
   208   \emph{keymap} that is configurable via \emph{Global Options~/
   209   Shortcuts}.  The @{verbatim imported} keymap is derived from the
   209   Shortcuts}.  The @{verbatim imported} keymap is derived from the
   210   initial environment of properties that is available at the first
   210   initial environment of properties that is available at the first
   211   start of the editor; afterwards the keymap file takes precedence.
   211   start of the editor; afterwards the keymap file takes precedence.
   212 
   212 
   213   This is relevant for Isabelle/jEdit due to various fine-tuning of default
   213   This is relevant for Isabelle/jEdit due to various fine-tuning of default
   214   properties, and additional keyboard shortcuts for Isabelle-specific
   214   properties, and additional keyboard shortcuts for Isabelle-specific
   215   functionality. Users may change their keymap later, but need to copy some
   215   functionality. Users may change their keymap later, but need to copy some
   216   key bindings manually (see also @{file_unchecked
   216   keyboard shortcuts manually (see also @{file_unchecked
   217   "$ISABELLE_HOME_USER/jedit/keymaps"}). *}
   217   "$ISABELLE_HOME_USER/jedit/keymaps"}).
       
   218 *}
   218 
   219 
   219 
   220 
   220 section {* Command-line invocation *}
   221 section {* Command-line invocation *}
   221 
   222 
   222 text {*
   223 text {*
   312   in mind that this extra variance of GUI functionality is unlikely to
   313   in mind that this extra variance of GUI functionality is unlikely to
   313   work in arbitrary combinations.  The platform-independent
   314   work in arbitrary combinations.  The platform-independent
   314   \emph{Nimbus} and \emph{Metal} should always work.  The historic
   315   \emph{Nimbus} and \emph{Metal} should always work.  The historic
   315   \emph{CDE/Motif} is better avoided.
   316   \emph{CDE/Motif} is better avoided.
   316 
   317 
   317   After changing the look-and-feel in \emph{Global Options /
   318   After changing the look-and-feel in \emph{Global Options~/
   318   Appearance}, it is advisable to restart Isabelle/jEdit in order to
   319   Appearance}, it is advisable to restart Isabelle/jEdit in order to
   319   take full effect.  *}
   320   take full effect.  *}
   320 
   321 
   321 
   322 
   322 section {* Dockable windows *}
   323 section {* Dockable windows *}
   410   source files.  Sometimes such defaults are reset accidentally, or
   411   source files.  Sometimes such defaults are reset accidentally, or
   411   malformed UTF-8 sequences in the text force jEdit to fall back on a
   412   malformed UTF-8 sequences in the text force jEdit to fall back on a
   412   different encoding like @{verbatim "ISO-8859-15"}.  In that case,
   413   different encoding like @{verbatim "ISO-8859-15"}.  In that case,
   413   verbatim ``@{verbatim "\<alpha>"}'' will be shown in the text buffer
   414   verbatim ``@{verbatim "\<alpha>"}'' will be shown in the text buffer
   414   instead of its Unicode rendering ``@{text "\<alpha>"}''.  The jEdit menu
   415   instead of its Unicode rendering ``@{text "\<alpha>"}''.  The jEdit menu
   415   operation \emph{File / Reload with Encoding / UTF-8-Isabelle} helps
   416   operation \emph{File~/ Reload with Encoding~/ UTF-8-Isabelle} helps
   416   to resolve such problems, potentially after repairing malformed
   417   to resolve such problems, potentially after repairing malformed
   417   parts of the text.
   418   parts of the text.
   418 
   419 
   419   \medskip \paragraph{Font.} Correct rendering via Unicode requires a
   420   \medskip \paragraph{Font.} Correct rendering via Unicode requires a
   420   font that contains glyphs for the corresponding codepoints.  Most
   421   font that contains glyphs for the corresponding codepoints.  Most
   451   \item The \emph{Symbols} panel: some GUI buttons allow to insert
   452   \item The \emph{Symbols} panel: some GUI buttons allow to insert
   452   certain symbols in the text buffer.  There are also tooltips to
   453   certain symbols in the text buffer.  There are also tooltips to
   453   reveal the official Isabelle representation with some additional
   454   reveal the official Isabelle representation with some additional
   454   information about \emph{symbol abbreviations} (see below).
   455   information about \emph{symbol abbreviations} (see below).
   455 
   456 
   456   \item Copy / paste from decoded source files: text that is rendered
   457   \item Copy/paste from decoded source files: text that is rendered
   457   as Unicode already can be re-used to produce further text.  This
   458   as Unicode already can be re-used to produce further text.  This
   458   also works between different applications, e.g.\ Isabelle/jEdit and
   459   also works between different applications, e.g.\ Isabelle/jEdit and
   459   some web browser or mail client, as long as the same Unicode view on
   460   some web browser or mail client, as long as the same Unicode view on
   460   Isabelle symbols is used.
   461   Isabelle symbols is used.
   461 
   462 
   462   \item Copy / paste from prover output within Isabelle/jEdit.  The
   463   \item Copy/paste from prover output within Isabelle/jEdit.  The
   463   same principles as for text buffers apply, but note that \emph{copy}
   464   same principles as for text buffers apply, but note that \emph{copy}
   464   in secondary Isabelle/jEdit windows works via the keyboard shortcut
   465   in secondary Isabelle/jEdit windows works via the keyboard shortcut
   465   @{verbatim "C+c"}, while jEdit menu actions always refer to the
   466   @{verbatim "C+c"}, while jEdit menu actions always refer to the
   466   primary text area!
   467   primary text area!
   467 
   468 
   700 
   701 
   701   Certain events to open or update editor buffers cause Isabelle/jEdit to
   702   Certain events to open or update editor buffers cause Isabelle/jEdit to
   702   resolve dependencies of theory imports. The system requests to load
   703   resolve dependencies of theory imports. The system requests to load
   703   additional files into editor buffers, in order to be included in the
   704   additional files into editor buffers, in order to be included in the
   704   document model for further checking. It is also possible to let the system
   705   document model for further checking. It is also possible to let the system
   705   resolve dependencies automatically, according to \emph{Plugin Options /
   706   resolve dependencies automatically, according to \emph{Plugin Options~/
   706   Isabelle / General / Auto Load}.
   707   Isabelle~/ General~/ Auto Load}.
   707 
   708 
   708   \medskip The visible \emph{perspective} of Isabelle/jEdit is defined by the
   709   \medskip The visible \emph{perspective} of Isabelle/jEdit is defined by the
   709   collective view on theory buffers via open text areas. The perspective is
   710   collective view on theory buffers via open text areas. The perspective is
   710   taken as a hint for document processing: the prover ensures that those parts
   711   taken as a hint for document processing: the prover ensures that those parts
   711   of a theory where the user is looking are checked, while other parts that
   712   of a theory where the user is looking are checked, while other parts that
   819   information to paint small rectangles for the overall status of the whole
   820   information to paint small rectangles for the overall status of the whole
   820   text buffer. The graphics is scaled to fit the logical buffer length into
   821   text buffer. The graphics is scaled to fit the logical buffer length into
   821   the given window height. Mouse clicks on the overview area position the
   822   the given window height. Mouse clicks on the overview area position the
   822   cursor approximately to the corresponding line of text in the buffer.
   823   cursor approximately to the corresponding line of text in the buffer.
   823   Repainting the overview in real-time causes problems with big theories, so
   824   Repainting the overview in real-time causes problems with big theories, so
   824   it is restricted according to \emph{Plugin Options / Isabelle / General /
   825   it is restricted according to \emph{Plugin Options~/ Isabelle~/ General~/
   825   Text Overview Limit} (in characters).
   826   Text Overview Limit} (in characters).
   826 
   827 
   827   Another course-grained overview is provided by the \emph{Theories}
   828   Another course-grained overview is provided by the \emph{Theories}
   828   panel, but without direct correspondence to text positions.  A
   829   panel, but without direct correspondence to text positions.  A
   829   double-click on one of the theory entries with their status overview
   830   double-click on one of the theory entries with their status overview
  1013 text {*
  1014 text {*
  1014   Smart completion of partial input is the IDE functionality \emph{par
  1015   Smart completion of partial input is the IDE functionality \emph{par
  1015   excellance}. Isabelle/jEdit combines several sources of information to
  1016   excellance}. Isabelle/jEdit combines several sources of information to
  1016   achieve that. Despite its complexity, it should be possible to get some idea
  1017   achieve that. Despite its complexity, it should be possible to get some idea
  1017   how completion works by experimentation, based on the overview of completion
  1018   how completion works by experimentation, based on the overview of completion
  1018   varieties in \secref{sec:completion-varieties}. Later sections explain
  1019   varieties in \secref{sec:completion-varieties}. The remaining subsections
  1019   concepts around completion more systematically.
  1020   explain concepts around completion more systematically.
  1020 
  1021 
  1021   \emph{Explicit completion} works via the action @{action_ref
  1022   \medskip \emph{Explicit completion} is triggered by the action @{action_ref
  1022   "isabelle.complete"}, which is bound to the key sequence @{verbatim "C+b"}
  1023   "isabelle.complete"}, which is bound to the keyboard shortcut @{verbatim
  1023   (overriding the jEdit default for @{action_ref "complete-word"}).
  1024   "C+b"}, and thus overrides the jEdit default for @{action_ref
       
  1025   "complete-word"}.
       
  1026 
  1024   \emph{Implicit completion} hooks into the regular keyboard input stream of
  1027   \emph{Implicit completion} hooks into the regular keyboard input stream of
  1025   the editor, with some filtering and optional delays.
  1028   the editor, with some event filtering and optional delays.
  1026 
  1029 
  1027   \medskip Completion options may be configured in \emph{Plugin Options /
  1030   \medskip Completion options may be configured in \emph{Plugin Options~/
  1028   Isabelle / General / Completion}. These are explained in further detail
  1031   Isabelle~/ General~/ Completion}. These are explained in further detail
  1029   below, whenever relevant. There is also a summary of options in
  1032   below, whenever relevant. There is also a summary of options in
  1030   \secref{sec:completion-options}.
  1033   \secref{sec:completion-options}.
  1031 
  1034 
  1032   The asynchronous nature of PIDE interaction means that information
  1035   The asynchronous nature of PIDE interaction means that information from the
  1033   from the prover is always delayed --- at least by a full round-trip of the
  1036   prover is delayed --- at least by a full round-trip of the document update
  1034   document update protocol. The default completion options
  1037   protocol. The default options already take this into account, with a
  1035   (\secref{sec:completion-options}) already take this into account, with a
       
  1036   sufficiently long completion delay to speculate on the availability of all
  1038   sufficiently long completion delay to speculate on the availability of all
  1037   relevant information from the editor and the prover. Although there is an
  1039   relevant information from the editor and the prover, before completing text
  1038   inherent danger of non-deterministic behaviour due to such real-time delays,
  1040   immediately or producing a popup. Although there is an inherent danger of
  1039   the general completion policies aim at determined results as far as
  1041   non-deterministic behaviour due to such real-time parameters, the general
  1040   possible.
  1042   completion policy aims at determined results as far as possible.
  1041 *}
  1043 *}
  1042 
  1044 
  1043 
  1045 
  1044 subsection {* Varieties of completion \label{sec:completion-varieties} *}
  1046 subsection {* Varieties of completion \label{sec:completion-varieties} *}
  1045 
  1047 
  1048 text {*
  1050 text {*
  1049   Isabelle is ultimately a framework of nested sub-languages of different
  1051   Isabelle is ultimately a framework of nested sub-languages of different
  1050   kinds and purposes. The completion mechanism supports this by the following
  1052   kinds and purposes. The completion mechanism supports this by the following
  1051   built-in templates:
  1053   built-in templates:
  1052 
  1054 
  1053   \begin{itemize}
  1055   \begin{description}
  1054 
  1056 
  1055   \item @{verbatim "`"} (single ASCII back-quote) supports \emph{quotations}
  1057   \item[] @{verbatim "`"} (single ASCII back-quote) supports \emph{quotations}
  1056   via text cartouches. There are three selections, which are always presented
  1058   via text cartouches. There are three selections, which are always presented
  1057   in the same order and do not depend on any context information. The default
  1059   in the same order and do not depend on any context information. The default
  1058   choice produces a template ``@{text "\<open>\<box>\<close>"}'', where the box indicates the
  1060   choice produces a template ``@{text "\<open>\<box>\<close>"}'', where the box indicates the
  1059   cursor position after insertion; the other choices help to repair the block
  1061   cursor position after insertion; the other choices help to repair the block
  1060   structure of unbalanced text cartouches.
  1062   structure of unbalanced text cartouches.
  1061 
  1063 
  1062   \item @{verbatim "@{"} is completed to the template ``@{text "@{\<box>}"}'' where
  1064   \item[] @{verbatim "@{"} is completed to the template ``@{text "@{\<box>}"}'',
  1063   the box indicates the cursor position after insertion. Here it is convenient
  1065   where the box indicates the cursor position after insertion. Here it is
  1064   to use ``@{verbatim __}'' or more specific name prefixes to let semantic
  1066   convenient to use the wildcard ``@{verbatim __}'' or a more specific name
  1065   completion of name-space entries propose antiquotation names.
  1067   prefix to let semantic completion of name-space entries propose
  1066 
  1068   antiquotation names.
  1067   \end{itemize}
  1069 
  1068 
  1070   \end{description}
  1069   With some practice, the nesting of quoted sub-languages and antiquotations
  1071 
  1070   of embedded languages should work fluently. Note that national keyboard
  1072   With some practice, input of quoted sub-languages and antiquotations of
  1071   layouts might cause problems with back-quote as dead key: if possible, dead
  1073   embedded languages should work fluently. Note that national keyboard layouts
  1072   keys are better disabled.
  1074   might cause problems with back-quote as dead key: if possible, dead keys
       
  1075   should be disabled.
       
  1076 *}
       
  1077 
       
  1078 
       
  1079 subsubsection {* Syntax keywords *}
       
  1080 
       
  1081 text {*
       
  1082   Syntax completion tables are determined statically from the keywords of the
       
  1083   ``outer syntax'' of the underlying edit mode: for theory files this is the
       
  1084   syntax of Isar commands.
       
  1085 
       
  1086   Keywords are usually plain words, which means the completion mechanism only
       
  1087   inserts them directly into the text for explicit completion
       
  1088   (\secref{sec:completion-input}), but produces a popup
       
  1089   (\secref{sec:completion-popup}) otherwise.
       
  1090 
       
  1091   At the point where outer syntax keywords are defined, it is possible to
       
  1092   specify an alternative replacement string to be inserted instead of the
       
  1093   keyword itself. An empty string means to suppress the keyword altogether,
       
  1094   which is occasionally useful to avoid confusion, e.g.\ the rare keyword
       
  1095   @{command simproc_setup} vs.\ the frequent name-space entry @{text simp}.
  1073 *}
  1096 *}
  1074 
  1097 
  1075 
  1098 
  1076 subsubsection {* Symbols *}
  1099 subsubsection {* Symbols *}
  1077 
  1100 
  1084   \medskip
  1107   \medskip
  1085   \begin{tabular}{ll}
  1108   \begin{tabular}{ll}
  1086   \textbf{completion entry} & \textbf{example} \\\hline
  1109   \textbf{completion entry} & \textbf{example} \\\hline
  1087   literal symbol & @{verbatim "\<forall>"} \\
  1110   literal symbol & @{verbatim "\<forall>"} \\
  1088   symbol name with backslash & @{verbatim "\\"}@{verbatim forall} \\
  1111   symbol name with backslash & @{verbatim "\\"}@{verbatim forall} \\
  1089   symbol abbreviation & @{verbatim "!"} or @{verbatim "ALL"} \\
  1112   symbol abbreviation & @{verbatim "ALL"} or @{verbatim "!"} \\
  1090   \end{tabular}
  1113   \end{tabular}
  1091   \medskip
  1114   \medskip
  1092 
  1115 
       
  1116   When inserted into the text, the above examples all produce the same Unicode
       
  1117   rendering @{text "\<forall>"} of the underlying symbol @{verbatim "\<forall>"}.
       
  1118 
  1093   A symbol abbreviation that is a plain word, like @{verbatim "ALL"}, is
  1119   A symbol abbreviation that is a plain word, like @{verbatim "ALL"}, is
  1094   treated like a syntax keyword. Non-word abbreviations are inserted more
  1120   treated like a syntax keyword. Non-word abbreviations like @{verbatim "-->"}
  1095   aggressively, but with the exception of single-character abbreviations like
  1121   are inserted more aggressively, except for single-character abbreviations
  1096   @{verbatim "!"} above.
  1122   like @{verbatim "!"} above.
  1097 
  1123 
  1098   When inserted into the text, the examples above all produce the same Unicode
  1124   \medskip Symbol completion depends on the semantic language context
  1099   rendering @{text "\<forall>"} of the underlying symbol @{verbatim "\<forall>"}.
       
  1100 
       
  1101   \medskip Symbol completion of depends on the semantic language context
       
  1102   (\secref{sec:completion-context}), to enable or disable that aspect for a
  1125   (\secref{sec:completion-context}), to enable or disable that aspect for a
  1103   particular sub-language of Isabelle. For example, within document source,
  1126   particular sub-language of Isabelle. For example, symbol completion is
  1104   symbol completion is suppressed to avoid confusion with {\LaTeX} that use
  1127   suppressed within document source to avoid confusion with {\LaTeX} macros
  1105   similar notation.
  1128   that use similar notation.
  1106 *}
       
  1107 
       
  1108 
       
  1109 subsubsection {* Syntax keywords *}
       
  1110 
       
  1111 text {*
       
  1112   Syntax completion tables are determined statically from the keywords of the
       
  1113   ``outer syntax'' of the underlying edit mode: for theory files this is the
       
  1114   syntax of Isar commands.
       
  1115 
       
  1116   Keywords are usually plain words, which means the completion mechanism only
       
  1117   inserts them directly into the text for explicit completion
       
  1118   (\secref{sec:completion-input}).
       
  1119 
       
  1120   At the point where outer syntax keywords are defined, it is possible to
       
  1121   specify an alternative replacement string to be inserted instead of the
       
  1122   keyword itself. An empty string means to suppress the keyword altogether,
       
  1123   which is occasionally useful to avoid confusion (e.g.\ the rare keyword
       
  1124   @{command simproc_setup} vs.\ the frequent name-space entry @{text simp}).
       
  1125 *}
  1129 *}
  1126 
  1130 
  1127 
  1131 
  1128 subsubsection {* Name-space entries *}
  1132 subsubsection {* Name-space entries *}
  1129 
  1133 
  1130 text {*
  1134 text {*
  1131   This is genuine semantic completion, using information from the prover, so
  1135   This is genuine semantic completion, using information from the prover, so
  1132   it requires some delay. A \emph{failed name-space lookup} produces an error
  1136   it requires some delay. A \emph{failed name-space lookup} produces an error
  1133   message that is annotated with a list of alternative names that are legal,
  1137   message that is annotated with a list of alternative names that are legal.
  1134   which truncated according to the system option @{system_option_ref
  1138   The list of results is truncated according to the system option
  1135   completion_limit}. The completion mechanism takes this into account when
  1139   @{system_option_ref completion_limit}. The completion mechanism takes this
  1136   collecting information.
  1140   into account when collecting information on the prover side.
  1137 
  1141 
  1138   Already recognized names are \emph{not} completed further, but completion
  1142   Already recognized names are \emph{not} completed further, but completion
  1139   may be extended by appending a suffix of underscores. This provokes a failed
  1143   may be extended by appending a suffix of underscores. This provokes a failed
  1140   lookup, and another completion attempt while ignoring the underscores. For
  1144   lookup, and another completion attempt while ignoring the underscores. For
  1141   example, in a name space where @{verbatim "foo"} and @{verbatim "foobar"}
  1145   example, in a name space where @{verbatim "foo"} and @{verbatim "foobar"}
  1152 
  1156 
  1153 subsubsection {* File-system paths *}
  1157 subsubsection {* File-system paths *}
  1154 
  1158 
  1155 text {*
  1159 text {*
  1156   Depending on prover markup about file-system path specifications in the
  1160   Depending on prover markup about file-system path specifications in the
  1157   formal text, e.g.\ for the argument of a load command
  1161   source text, e.g.\ for the argument of a load command
  1158   (\secref{sec:aux-files}), the completion mechanism explores the directory
  1162   (\secref{sec:aux-files}), the completion mechanism explores the directory
  1159   content and offers the result as completion popup. Relative path
  1163   content and offers the result as completion popup. Relative path
  1160   specifications are understood wrt.\ the \emph{master directory} of the
  1164   specifications are understood wrt.\ the \emph{master directory} of the
  1161   document node (\secref{sec:buffer-node}) of the enclosing editor buffer
  1165   document node (\secref{sec:buffer-node}) of the enclosing editor buffer;
  1162   (this requires a proper theory, not an auxiliary file).
  1166   this requires a proper theory, not an auxiliary file.
  1163 
  1167 
  1164   A suffix of slashes may be used to continue the exploration of an already
  1168   A suffix of slashes may be used to continue the exploration of an already
  1165   recognized directory name.
  1169   recognized directory name.
  1166 
       
  1167   The system option @{system_option_ref jedit_completion_path_ignore}
       
  1168   specifies ``glob'' patterns to ignore in file-system path completion
       
  1169   (separated by colons), e.g.\ backup files ending with tilde.
       
  1170 *}
  1170 *}
  1171 
  1171 
  1172 
  1172 
  1173 subsubsection {* Spell-checking *}
  1173 subsubsection {* Spell-checking *}
  1174 
  1174 
  1176   The spell-checker combines semantic markup from the prover (regions of plain
  1176   The spell-checker combines semantic markup from the prover (regions of plain
  1177   words) with static dictionaries (word lists) that are known to the editor.
  1177   words) with static dictionaries (word lists) that are known to the editor.
  1178 
  1178 
  1179   Unknown words are underlined in the text, using @{system_option_ref
  1179   Unknown words are underlined in the text, using @{system_option_ref
  1180   spell_checker_color} (blue by default). This is not an error, but a hint to
  1180   spell_checker_color} (blue by default). This is not an error, but a hint to
  1181   the user that some action may have to be taken. The jEdit context menu
  1181   the user that some action may be taken. The jEdit context menu provides
  1182   provides various actions, as far as applicable:
  1182   various actions, as far as applicable:
  1183 
  1183 
  1184   \medskip
  1184   \medskip
  1185   \begin{tabular}{l}
  1185   \begin{tabular}{l}
  1186   @{action_ref "isabelle.complete-word"} \\
  1186   @{action_ref "isabelle.complete-word"} \\
  1187   @{action_ref "isabelle.exclude-word"} \\
  1187   @{action_ref "isabelle.exclude-word"} \\
  1191   \end{tabular}
  1191   \end{tabular}
  1192   \medskip
  1192   \medskip
  1193 
  1193 
  1194   Instead of the specific @{action_ref "isabelle.complete-word"}, it is also
  1194   Instead of the specific @{action_ref "isabelle.complete-word"}, it is also
  1195   possible to use the generic @{action_ref "isabelle.complete"} with its
  1195   possible to use the generic @{action_ref "isabelle.complete"} with its
  1196   default key binding @{verbatim "C+b"}.
  1196   default keyboard shortcut @{verbatim "C+b"}.
  1197 
  1197 
  1198   \medskip Dictionary lookup uses some educated guesses about lower-case,
  1198   \medskip Dictionary lookup uses some educated guesses about lower-case,
  1199   upper-case, and capitalized words. This is oriented on common use in
  1199   upper-case, and capitalized words. This is oriented on common use in
  1200   English, where this aspect is not decisive for proper spelling, unlike
  1200   English, where this aspect is not decisive for proper spelling, in contrast
  1201   German, for example.
  1201   to German, for example.
  1202 *}
  1202 *}
  1203 
  1203 
  1204 
  1204 
  1205 subsection {* Semantic completion context \label{sec:completion-context} *}
  1205 subsection {* Semantic completion context \label{sec:completion-context} *}
  1206 
  1206 
  1209   although with some delay, because at least a full PIDE protocol round-trip
  1209   although with some delay, because at least a full PIDE protocol round-trip
  1210   is required. Until that information becomes available in the PIDE
  1210   is required. Until that information becomes available in the PIDE
  1211   document-model, the default context is given by the outer syntax of the
  1211   document-model, the default context is given by the outer syntax of the
  1212   editor mode (see also \secref{sec:buffer-node}).
  1212   editor mode (see also \secref{sec:buffer-node}).
  1213 
  1213 
  1214   The \emph{language context} by the prover provides information about
  1214   The semantic \emph{language context} provides information about nested
  1215   embedded languages of Isabelle: keywords are only completed for outer
  1215   sub-languages of Isabelle: keywords are only completed for outer syntax,
  1216   syntax, symbols or antiquotations for languages that support them. E.g.\
  1216   symbols or antiquotations for languages that support them. E.g.\ there is no
  1217   there is no symbol completion for ML source, but within ML strings,
  1217   symbol completion for ML source, but within ML strings, comments,
  1218   comments, antiquotations.
  1218   antiquotations.
  1219 
  1219 
  1220   In exceptional situations, the prover may produce \emph{no completion}
  1220   The prover may produce \emph{no completion} markup in exceptional
  1221   markup, to tell that some language keywords should be excluded from further
  1221   situations, to tell that some language keywords should be excluded from
  1222   completion attempts. For example, ``@{verbatim ":"}'' within accepted Isar
  1222   further completion attempts. For example, @{verbatim ":"} within accepted
  1223   syntax looses its meaning as abbreviation for symbol ``@{text "\<in>"}''.
  1223   Isar syntax looses its meaning as abbreviation for symbol @{text "\<in>"}.
  1224 *}
  1224 *}
  1225 
  1225 
  1226 
  1226 
  1227 subsection {* Input events \label{sec:completion-input} *}
  1227 subsection {* Input events \label{sec:completion-input} *}
  1228 
  1228 
  1231   optional delay after keyboard input according to @{system_option
  1231   optional delay after keyboard input according to @{system_option
  1232   jedit_completion_delay}.
  1232   jedit_completion_delay}.
  1233 
  1233 
  1234   \begin{description}
  1234   \begin{description}
  1235 
  1235 
  1236   \item[Explicit completion] via action @{action_ref "isabelle.complete"}
  1236   \item[Explicit completion] works via action @{action_ref
  1237   with keyboard shortcut @{verbatim "C+b"}. This overrides the shortcut for
  1237   "isabelle.complete"} with keyboard shortcut @{verbatim "C+b"}. This
  1238   @{action_ref "complete-word"} in jEdit. It is also possible to restore the
  1238   overrides the shortcut for @{action_ref "complete-word"} in jEdit, but it is
  1239   original jEdit keyboard mapping of @{action "complete-word"} via
  1239   possible to restore the original jEdit keyboard mapping of @{action
  1240   \emph{Global Options / Shortcuts}, and invent a different one for @{action
  1240   "complete-word"} via \emph{Global Options~/ Shortcuts} and invent a
  1241   "isabelle.complete"}.
  1241   different one for @{action "isabelle.complete"}.
  1242 
  1242 
  1243   \item[Explicit spell-checker completion] via @{action_ref
  1243   \item[Explicit spell-checker completion] works via @{action_ref
  1244   "isabelle.complete-word"}, which is exposed in the jEdit context menu, if
  1244   "isabelle.complete-word"}, which is exposed in the jEdit context menu, if
  1245   the mouse points to a word that the spell-checker can complete.
  1245   the mouse points to a word that the spell-checker can complete.
  1246 
  1246 
  1247   \item[Implicit completion] via regular keyboard input of the editor. This
  1247   \item[Implicit completion] works via regular keyboard input of the editor.
  1248   depends on further side-conditions:
  1248   It depends on further side-conditions:
  1249 
  1249 
  1250   \begin{enumerate}
  1250   \begin{enumerate}
  1251 
  1251 
  1252   \item The system option @{system_option_ref jedit_completion} needs to
  1252   \item The system option @{system_option_ref jedit_completion} needs to
  1253   be enabled (default).
  1253   be enabled (default).
  1277 
  1277 
  1278 
  1278 
  1279 subsection {* Completion popup \label{sec:completion-popup} *}
  1279 subsection {* Completion popup \label{sec:completion-popup} *}
  1280 
  1280 
  1281 text {*
  1281 text {*
  1282   A \emph{completion popup} is a minimally GUI component over the text area
  1282   A \emph{completion popup} is a minimally invasive GUI component over the
  1283   that offers a selection of completion items to be inserted into the text.
  1283   text area that offers a selection of completion items to be inserted into
  1284   The popup interprets special keys @{verbatim TAB}, @{verbatim ESCAPE},
  1284   the text, e.g.\ by mouse clicks. The popup interprets special keys
  1285   @{verbatim UP}, @{verbatim DOWN}, @{verbatim PAGE_UP}, @{verbatim
  1285   @{verbatim TAB}, @{verbatim ESCAPE}, @{verbatim UP}, @{verbatim DOWN},
  1286   PAGE_DOWN}, but all other key events are passed to the underlying text area.
  1286   @{verbatim PAGE_UP}, @{verbatim PAGE_DOWN}, but all other key events are
  1287   This allows to ignore unwanted completions most of the time and continue
  1287   passed to the underlying text area. This allows to ignore unwanted
  1288   typing quickly. Thus the popup serves as a mechanism of confirmation of
  1288   completions most of the time and continue typing quickly. Thus the popup
  1289   proposed items, but the default is to continue without completion.
  1289   serves as a mechanism of confirmation of proposed items, but the default is
       
  1290   to continue without completion.
  1290 
  1291 
  1291   The meaning of special keys is as follows:
  1292   The meaning of special keys is as follows:
  1292 
  1293 
  1293   \medskip
  1294   \medskip
  1294   \begin{tabular}{ll}
  1295   \begin{tabular}{ll}
  1312 
  1313 
  1313 text {*
  1314 text {*
  1314   Completion may first propose replacements to be selected (via a popup), or
  1315   Completion may first propose replacements to be selected (via a popup), or
  1315   replace text immediately in certain situations and depending on certain
  1316   replace text immediately in certain situations and depending on certain
  1316   options like @{system_option jedit_completion_immediate}. In any case,
  1317   options like @{system_option jedit_completion_immediate}. In any case,
  1317   insertion works uniformly, by imitating normal text insertion by the user to
  1318   insertion works uniformly, by imitating normal text insertion to some
  1318   some extent. The precise behaviour depends on the state of the jEdit
  1319   extent. The precise behaviour depends on the state of the \emph{text
  1319   \emph{text selection}. Isabelle/jEdit attempts to imitate the most common
  1320   selection} of jEdit. Isabelle/jEdit tries to accommodate the most common
  1320   forms of advanced selections in jEdit to some extent, but not all
  1321   forms of advanced selections in jEdit, but not all combinations make sense.
  1321   combinations make sense. The following important cases are well-defined.
  1322   At least the following important cases are well-defined.
  1322 
  1323 
  1323   \begin{description}
  1324   \begin{description}
  1324 
  1325 
  1325   \item[No selection.] The original is removed and the replacement inserted,
  1326   \item[No selection.] The original is removed and the replacement inserted,
  1326   depending on the caret position.
  1327   depending on the caret position.
  1327 
  1328 
  1328   \item[Rectangular selection zero width.] This special case is treated by
  1329   \item[Rectangular selection zero width.] This special case is treated by
  1329   jEdit as ``tall caret'' and insertion of completion imitates its normal
  1330   jEdit as ``tall caret'' and insertion of completion imitates its normal
  1330   behaviour: separate copies of the text are inserted for each line of the
  1331   behaviour: separate copies of the replacement are inserted for each line of
       
  1332   the selection.
       
  1333 
       
  1334   \item[Other rectangular selection or multiple selections.] Here the original
       
  1335   is removed and the replacement is inserted for each line (or segment) of the
  1331   selection.
  1336   selection.
  1332 
  1337 
  1333   \item[Other rectangular selection or multiple selections.] Here the
       
  1334   replacement is inserted in each segment of the selection. For a rectangular
       
  1335   one in each line.
       
  1336 
       
  1337   \end{description}
  1338   \end{description}
  1338 
  1339 
  1339   Support for multiple selections is particularly useful for HyperSearch:
  1340   Support for multiple selections is particularly useful for
  1340   clicking on one of the results in the output window makes jEdit select all
  1341   \emph{HyperSearch}: clicking on one of the items in the \emph{HyperSearch
  1341   its occurrences in the corresponding line of text. The explicit completion
  1342   Results} window makes jEdit select all its occurrences in the corresponding
  1342   can be invoked via @{verbatim "C+b"}, for example to replace occurrences of
  1343   line of text. Then explicit completion can be invoked via @{verbatim "C+b"},
  1343   @{verbatim "-->"} by @{text "\<longrightarrow>"}.
  1344   for example to replace occurrences of @{verbatim "-->"} by @{text "\<longrightarrow>"}.
  1344 
  1345 
  1345   \medskip Insertion works by removing and inserting pieces of text from the
  1346   \medskip Insertion works by removing and inserting pieces of text from the
  1346   buffer. This counts as one atomic operation in terms of the jEdit
  1347   buffer. This counts as one atomic operation on the jEdit history. Thus
  1347   @{action_ref undo} history. Unintended completions may be reverted by the
  1348   unintended completions may be reverted by the regular @{action undo} action
  1348   regular @{action undo} action of jEdit. According to normal jEdit policies,
  1349   of jEdit. According to normal jEdit policies, the recovered text after
  1349   the recovered text after @{action undo} is selected: @{verbatim ESCAPE} is
  1350   @{action undo} is selected: @{verbatim ESCAPE} is required to reset the
  1350   required to reset the selection and to to continue typing more text.
  1351   selection and to continue typing more text.
  1351 *}
  1352 *}
  1352 
  1353 
  1353 
  1354 
  1354 subsection {* Options \label{sec:completion-options} *}
  1355 subsection {* Options \label{sec:completion-options} *}
  1355 
  1356 
  1356 text {*
  1357 text {*
  1357   This is a summary of Isabelle/Scala system options that are relevant for
  1358   This is a summary of Isabelle/Scala system options that are relevant for
  1358   completion. They may be configured in \emph{Plugin Options / Isabelle /
  1359   completion. They may be configured in \emph{Plugin Options~/ Isabelle~/
  1359   General} as usual.
  1360   General} as usual.
  1360 
  1361 
  1361   \begin{itemize}
  1362   \begin{itemize}
  1362 
  1363 
  1363   \item @{system_option_def completion_limit} specifies the limit of
  1364   \item @{system_option_def completion_limit} specifies the maximum number of
  1364   name-space entries exposed in semantic completion by the prover.
  1365   name-space entries exposed in semantic completion by the prover.
  1365 
  1366 
  1366   \item @{system_option_def jedit_completion} guards implicit completion via
  1367   \item @{system_option_def jedit_completion} guards implicit completion via
  1367   regular jEdit keyboard input events (\secref{sec:completion-input}).
  1368   regular jEdit key events (\secref{sec:completion-input}): it allows to
       
  1369   disable implicit completion altogether.
  1368 
  1370 
  1369   \item @{system_option_def jedit_completion_context} specifies whether the
  1371   \item @{system_option_def jedit_completion_context} specifies whether the
  1370   language context provided by the prover should be used. Disabling that
  1372   language context provided by the prover should be used at all. Disabling
  1371   option makes completion less ``semantic''. Note that incomplete or broken
  1373   that option makes completion less ``semantic''. Note that incomplete or
  1372   input may cause some disagreement of the prover and the user about the
  1374   severely broken input may cause some disagreement of the prover and the user
  1373   intended language context.
  1375   about the intended language context.
  1374 
  1376 
  1375   \item @{system_option_def jedit_completion_delay} and @{system_option_def
  1377   \item @{system_option_def jedit_completion_delay} and @{system_option_def
  1376   jedit_completion_immediate} determine the handling of keyboard events for
  1378   jedit_completion_immediate} determine the handling of keyboard events for
  1377   implicit completion (\secref{sec:completion-input}).
  1379   implicit completion (\secref{sec:completion-input}).
  1378 
  1380 
  1379   A @{system_option jedit_completion_delay}~@{verbatim "> 0"} postpones the
  1381   A @{system_option jedit_completion_delay}~@{verbatim "> 0"} postpones the
  1380   processing of key event, until after the user has stopped typing for the
  1382   processing of key events, until after the user has stopped typing for the
  1381   given time span, but @{system_option jedit_completion_immediate}~@{verbatim
  1383   given time span, but @{system_option jedit_completion_immediate}~@{verbatim
  1382   "= true"} means that abbreviations of Isabelle symbols are handled
  1384   "= true"} means that abbreviations of Isabelle symbols are handled
  1383   nonetheless.
  1385   nonetheless.
  1384 
  1386 
  1385   \item @{system_option_def jedit_completion_path_ignore} specifies ``glob''
  1387   \item @{system_option_def jedit_completion_path_ignore} specifies ``glob''
  1386   patterns to ignore in file-system path completion (separated by colons).
  1388   patterns to ignore in file-system path completion (separated by colons),
       
  1389   e.g.\ backup files ending with tilde.
  1387 
  1390 
  1388   \item @{system_option_def spell_checker} is a global guard for all
  1391   \item @{system_option_def spell_checker} is a global guard for all
  1389   spell-checker operations: it allows to disable that mechanism altogether.
  1392   spell-checker operations: it allows to disable that mechanism altogether.
  1390 
  1393 
  1391   \item @{system_option_def spell_checker_dictionary} determines the current
  1394   \item @{system_option_def spell_checker_dictionary} determines the current
  1392   dictionary, from the colon-separated list given by the settings variable
  1395   dictionary, taken from the colon-separated list in the settings variable
  1393   @{setting_def JORTHO_DICTIONARIES}. There are jEdit actions to specify local
  1396   @{setting_def JORTHO_DICTIONARIES}. There are jEdit actions to specify local
  1394   updates to a dictionary, by including or excluding words. The result of
  1397   updates to a dictionary, by including or excluding words. The result of
  1395   permanent dictionary updates is stored in the directory @{file_unchecked
  1398   permanent dictionary updates is stored in the directory @{file_unchecked
  1396   "$ISABELLE_HOME_USER/dictionaries"}.
  1399   "$ISABELLE_HOME_USER/dictionaries"}, in a separate file for each dictionary.
  1397 
  1400 
  1398   \item @{system_option_def spell_checker_elements} specifies a
  1401   \item @{system_option_def spell_checker_elements} specifies a
  1399   comma-separated list of markup elements that delimit words in the source
  1402   comma-separated list of markup elements that delimit words in the source
  1400   that is subject to spell-checking, including various forms of comments.
  1403   that is subject to spell-checking, including various forms of comments.
  1401 
  1404 
  1433   \label{fig:auto-tools}
  1436   \label{fig:auto-tools}
  1434   \end{figure}
  1437   \end{figure}
  1435 
  1438 
  1436   \medskip The following Isabelle system options control the behavior
  1439   \medskip The following Isabelle system options control the behavior
  1437   of automatically tried tools (see also the jEdit dialog window
  1440   of automatically tried tools (see also the jEdit dialog window
  1438   \emph{Plugin Options / Isabelle / General / Automatically tried
  1441   \emph{Plugin Options~/ Isabelle~/ General~/ Automatically tried
  1439   tools}):
  1442   tools}):
  1440 
  1443 
  1441   \begin{itemize}
  1444   \begin{itemize}
  1442 
  1445 
  1443   \item @{system_option_ref auto_methods} controls automatic use of a
  1446   \item @{system_option_ref auto_methods} controls automatic use of a
  1565   tooltip for the corresponding command keyword, using the technique
  1568   tooltip for the corresponding command keyword, using the technique
  1566   of mouse hovering with @{verbatim CONTROL}/@{verbatim COMMAND}
  1569   of mouse hovering with @{verbatim CONTROL}/@{verbatim COMMAND}
  1567   modifier key as explained in \secref{sec:tooltips-hyperlinks}.
  1570   modifier key as explained in \secref{sec:tooltips-hyperlinks}.
  1568   Actual display of timing depends on the global option
  1571   Actual display of timing depends on the global option
  1569   @{system_option_ref jedit_timing_threshold}, which can be configured in
  1572   @{system_option_ref jedit_timing_threshold}, which can be configured in
  1570   "Plugin Options / Isabelle / General".
  1573   "Plugin Options~/ Isabelle~/ General".
  1571 
  1574 
  1572   \medskip The \emph{Monitor} panel provides a general impression of
  1575   \medskip The \emph{Monitor} panel provides a general impression of
  1573   recent activity of the farm of worker threads in Isabelle/ML.  Its
  1576   recent activity of the farm of worker threads in Isabelle/ML.  Its
  1574   display is continuously updated according to @{system_option_ref
  1577   display is continuously updated according to @{system_option_ref
  1575   editor_chart_delay}.  Note that the painting of the chart takes
  1578   editor_chart_delay}.  Note that the painting of the chart takes
  1637   \begin{itemize}
  1640   \begin{itemize}
  1638 
  1641 
  1639   \item \textbf{Problem:} Odd behavior of some diagnostic commands with
  1642   \item \textbf{Problem:} Odd behavior of some diagnostic commands with
  1640   global side-effects, like writing a physical file.
  1643   global side-effects, like writing a physical file.
  1641 
  1644 
  1642   \textbf{Workaround:} Copy / paste complete command text from
  1645   \textbf{Workaround:} Copy/paste complete command text from
  1643   elsewhere, or disable continuous checking temporarily.
  1646   elsewhere, or disable continuous checking temporarily.
  1644 
  1647 
  1645   \item \textbf{Problem:} No way to delete document nodes from the overall
  1648   \item \textbf{Problem:} No way to delete document nodes from the overall
  1646   collection of theories.
  1649   collection of theories.
  1647 
  1650 
  1650 
  1653 
  1651   \item \textbf{Problem:} Keyboard shortcuts @{verbatim "C+PLUS"} and
  1654   \item \textbf{Problem:} Keyboard shortcuts @{verbatim "C+PLUS"} and
  1652   @{verbatim "C+MINUS"} for adjusting the editor font size depend on
  1655   @{verbatim "C+MINUS"} for adjusting the editor font size depend on
  1653   platform details and national keyboards.
  1656   platform details and national keyboards.
  1654 
  1657 
  1655   \textbf{Workaround:} Rebind keys via \emph{Global Options /
  1658   \textbf{Workaround:} Rebind keys via \emph{Global Options~/
  1656   Shortcuts}.
  1659   Shortcuts}.
  1657 
  1660 
  1658   \item \textbf{Problem:} The Mac OS X keyboard shortcut @{verbatim
  1661   \item \textbf{Problem:} The Mac OS X key sequence @{verbatim
  1659   "COMMAND+COMMA"} for application \emph{Preferences} is in conflict
  1662   "COMMAND+COMMA"} for application \emph{Preferences} is in conflict with the
  1660   with the jEdit default shortcut for \emph{Incremental Search Bar}
  1663   jEdit default keyboard shortcut for \emph{Incremental Search Bar} (action
  1661   (action @{action_ref "quick-search"}).
  1664   @{action_ref "quick-search"}).
  1662 
  1665 
  1663   \textbf{Workaround:} Rebind key via \emph{Global Options /
  1666   \textbf{Workaround:} Rebind key via \emph{Global Options~/
  1664   Shortcuts} according to national keyboard, e.g.\ @{verbatim
  1667   Shortcuts} according to national keyboard, e.g.\ @{verbatim
  1665   "COMMAND+SLASH"} on English ones.
  1668   "COMMAND+SLASH"} on English ones.
  1666 
  1669 
  1667   \item \textbf{Problem:} Mac OS X system fonts sometimes lead to
  1670   \item \textbf{Problem:} Mac OS X system fonts sometimes lead to
  1668   character drop-outs in the main text area.
  1671   character drop-outs in the main text area.
  1669 
  1672 
  1670   \textbf{Workaround:} Use the default @{verbatim IsabelleText} font.
  1673   \textbf{Workaround:} Use the default @{verbatim IsabelleText} font.
  1671   (Do not install that font on the system.)
  1674   (Do not install that font on the system.)
  1672 
  1675 
  1673   \item \textbf{Problem:} Some Linux / X11 input methods such as IBus
  1676   \item \textbf{Problem:} Some Linux/X11 input methods such as IBus
  1674   tend to disrupt key event handling of Java/AWT/Swing.
  1677   tend to disrupt key event handling of Java/AWT/Swing.
  1675 
  1678 
  1676   \textbf{Workaround:} Do not use input methods, reset the environment
  1679   \textbf{Workaround:} Do not use input methods, reset the environment
  1677   variable @{verbatim XMODIFIERS} within Isabelle settings (default in
  1680   variable @{verbatim XMODIFIERS} within Isabelle settings (default in
  1678   Isabelle2013-2).
  1681   Isabelle2013-2).
  1679 
  1682 
  1680   \item \textbf{Problem:} Some Linux / X11 window managers that are
  1683   \item \textbf{Problem:} Some Linux/X11 window managers that are
  1681   not ``re-parenting'' cause problems with additional windows opened
  1684   not ``re-parenting'' cause problems with additional windows opened
  1682   by Java. This affects either historic or neo-minimalistic window
  1685   by Java. This affects either historic or neo-minimalistic window
  1683   managers like @{verbatim awesome} or @{verbatim xmonad}.
  1686   managers like @{verbatim awesome} or @{verbatim xmonad}.
  1684 
  1687 
  1685   \textbf{Workaround:} Use a regular re-parenting window manager.
  1688   \textbf{Workaround:} Use a regular re-parenting window manager.
  1686 
  1689 
  1687   \item \textbf{Problem:} Recent forks of Linux / X11 window managers
  1690   \item \textbf{Problem:} Recent forks of Linux/X11 window managers
  1688   and desktop environments (variants of Gnome) disrupt the handling of
  1691   and desktop environments (variants of Gnome) disrupt the handling of
  1689   menu popups and mouse positions of Java/AWT/Swing.
  1692   menu popups and mouse positions of Java/AWT/Swing.
  1690 
  1693 
  1691   \textbf{Workaround:} Use mainstream versions of Linux desktops.
  1694   \textbf{Workaround:} Use mainstream versions of Linux desktops.
  1692 
  1695 
  1693   \item \textbf{Problem:} Full-screen mode via jEdit action @{action_ref
  1696   \item \textbf{Problem:} Full-screen mode via jEdit action @{action_ref
  1694   "toggle-full-screen"} (default shortcut @{verbatim F11}) works on
  1697   "toggle-full-screen"} (default keyboard shortcut @{verbatim F11}) works on
  1695   Windows, but not on Mac OS X or various Linux / X11 window managers.
  1698   Windows, but not on Mac OS X or various Linux/X11 window managers.
  1696 
  1699 
  1697   \textbf{Workaround:} Use native full-screen control of the window
  1700   \textbf{Workaround:} Use native full-screen control of the window
  1698   manager (notably on Mac OS X).
  1701   manager (notably on Mac OS X).
  1699 
  1702 
  1700   \end{itemize}
  1703   \end{itemize}