src/Tools/jEdit/README.html
changeset 51082 55b82b1417d1
parent 51049 0b48d00aba8f
child 51109 cabf63b1ddfd
equal deleted inserted replaced
51081:70a4c11cd79e 51082:55b82b1417d1
    21   <em>asynchronous document processing</em>, which is supported
    21   <em>asynchronous document processing</em>, which is supported
    22   natively by the <em>parallel proof engine</em> implemented in Isabelle/ML.
    22   natively by the <em>parallel proof engine</em> implemented in Isabelle/ML.
    23 </p>
    23 </p>
    24 
    24 
    25 <p>
    25 <p>
    26   <b>Isabelle/jEdit</b> is the flagship application of the PIDE
    26   <b>Isabelle/jEdit</b> is the flagship application of the PIDE framework
    27   framework &mdash; it illustrates many of the ideas in a realistic
    27   &mdash; it is ready for small and large Isabelle applications, for
    28   manner, ready to be used right now in Isabelle applications.
    28   beginners and experts alike.
    29 </p>
    29 </p>
    30 
    30 
    31 <p>
    31 <p>
    32   <em>Research and implementation of concepts around PIDE has started
    32   <em>Research and implementation of concepts around PIDE has started
    33   around 2008 and was kindly supported by BMBF (http://www.bmbf.de),
    33   around 2008 and was kindly supported by BMBF (http://www.bmbf.de),
    46 principles.
    46 principles.
    47 </p>
    47 </p>
    48 
    48 
    49 <ul>
    49 <ul>
    50 
    50 
    51 <li>The original jEdit look-and-feel is generally preserved, although
    51 <li>The original jEdit look-and-feel is generally preserved, although some
    52   some default properties have been changed to accommodate Isabelle
    52 default properties have been changed to accommodate Isabelle (e.g. the text
    53   (e.g. the text area font).</li>
    53 area font).</li>
    54 
    54 
    55 <li>Formal Isabelle/Isar text is checked asynchronously while editing.
    55 <li>Formal Isabelle/Isar text is checked asynchronously while editing. The
    56   The user is in full command of the editor, and the prover refrains
    56 user is in full command of the editor, and the prover refrains from locking
    57   from locking portions of the buffer etc.</li>
    57 portions of the buffer.</li>
    58 
    58 
    59 <li>Prover feedback works via tooltips, syntax highlighting, colors,
    59 <li>Prover feedback works via colors, boxes, squiggly underline,
    60   boxes etc. based on semantic markup provided by Isabelle in the
    60 hyperlinks, popup windows, icons, clickable output, all based on semantic
    61   background.</li>
    61 markup produced by Isabelle in the background.</li>
    62 
    62 
    63 <li>Using the mouse together with the modifier key <tt>C</tt>
    63 <li>Using the mouse together with the modifier key <tt>CONTROL</tt> (Linux,
    64 (<tt>CONTROL</tt> on Linux or Windows,
    64 Windows) or <tt>COMMAND</tt> (Mac OS X) exposes additional formal
    65   <tt>COMMAND</tt> on Mac OS X) exposes additional information.</li>
    65 content.</li>
    66 
    66 
    67 <li>Dockable panels (e.g. <em>Output</em>) are managed as independent
    67 <li>Dockable panels (e.g. <em>Output</em>, <em>Symbols</em>) are managed as
    68   windows by jEdit, which also allows multiple instances.</li>
    68 independent windows by jEdit, which also allows multiple instances.</li>
    69 
    69 
    70 <li>Formal output (tooltips etc.) may be explored recursively, using the
    70 <li>Formal output (in popups etc.) may be explored recursively, using the
    71 same techniques as in the editor source buffer.</li>
    71 same techniques as in the editor source buffer.</li>
    72 
    72 
    73 <li>Prover process and source files are managed by the Isabelle/Scala on
    73 <li>The prover process and source files are managed on the editor side. The
    74 the editor side.  The prover experiences a mostly timeless and
    74 prover operates on timeless and stateless document content via
    75 stateless environment of formal document content.</li>
    75 Isabelle/Scala.</li>
       
    76 
       
    77 <li>Plugin options of jEdit (for the <em>Isabelle</em> plugin) give access
       
    78 to a selection of Isabelle/Scala options and its persistence preferences,
       
    79 usually with immediate effect on the prover back-end or editor
       
    80 front-end.</li>
       
    81 
       
    82 <li>The logic image of the prover session may be specified within
       
    83 Isabelle/jEdit, but this requires restart. The new image is provided
       
    84 automatically by the Isabelle build process.</li>
    76 
    85 
    77 </ul>
    86 </ul>
    78 
    87 
    79 
    88 
    80 <h2>Isabelle symbols and fonts</h2>
    89 <h2>Isabelle symbols and fonts</h2>
   150   <li><b>NOTE:</b> Generic jEdit abbreviations or plugins perform similar
   159   <li><b>NOTE:</b> Generic jEdit abbreviations or plugins perform similar
   151     source replacement operations; this works for Isabelle as long
   160     source replacement operations; this works for Isabelle as long
   152     as the Unicode sequences coincide with the symbol mapping.
   161     as the Unicode sequences coincide with the symbol mapping.
   153   </li>
   162   </li>
   154 
   163 
   155   <li><b>NOTE:</b> Raw unicode characters within prover source files
   164   <li><b>NOTE:</b> Raw Unicode characters within prover source files
   156   should be restricted to informal parts, e.g. to write text in
   165   should be restricted to informal parts, e.g. to write text in
   157   non-latin alphabets.  Mathematical symbols should be defined via the
   166   non-latin alphabets.  Mathematical symbols should be defined via the
   158   official rendering tables.
   167   official rendering tables.
   159   </li>
   168   </li>
   160 
   169 
       
   170   <li><b>NOTE:</b> Control symbols may be applied to a region of selected
       
   171     text, either using the Symbols dockable or keyboard shortcuts.</li>
       
   172 
   161 </ul>
   173 </ul>
   162 
   174 
   163 
   175 
   164 <h2>Limitations and known problems</h2>
   176 <h2>Limitations and known problems</h2>
   165 
   177 
   166 <ul>
   178 <ul>
   167   <li>Lack of dependency managed for auxiliary files that contribute
   179   <li>Keyboard shortcuts C-PLUS and C-MINUS for adjusting the editor font
       
   180   size depend on platform details and national keyboards.<br/>
       
   181   <em>Workaround: Use numeric keypad or rebind keys in the jEdit Shortcuts
       
   182   options dialog.</em></li>
       
   183 
       
   184   <li>Lack of dependency management for auxiliary files that contribute
   168   to a theory (e.g. <tt>ML_file</tt>).<br/>
   185   to a theory (e.g. <tt>ML_file</tt>).<br/>
   169   <em>Workaround:</em> Re-load files manually within the prover.</li>
   186   <em>Workaround:</em> Re-load files manually within the prover.</li>
   170 
   187 
   171   <li>Odd behavior of some diagnostic commands with global
   188   <li>Odd behavior of some diagnostic commands with global
   172   side-effects, like writing a physical
   189   side-effects, like writing a physical
   175   <li>No way to delete document nodes from the overall collection of
   192   <li>No way to delete document nodes from the overall collection of
   176   theories.<br/>
   193   theories.<br/>
   177   <em>Workaround:</em> Restart whole Isabelle/jEdit session in
   194   <em>Workaround:</em> Restart whole Isabelle/jEdit session in
   178   worst-case situation.</li>
   195   worst-case situation.</li>
   179 
   196 
   180   <li>No support for non-local markup, e.g. commands reporting on
   197   <li>Some Linux desktop environments with extreme animation effects
   181   previous commands (proof end on proof head), or markup produced by
   198   may disrupt Java 7 window placement and keyboard focus.</br/>
   182   loading external files.</li>
   199   <em>Workaround:</em> Disable such effects.</li>
   183 
   200 
   184   <li>The native MacOSX plugin for jEdit tends to be disruptive. It
   201   <li>The native MacOSX plugin for jEdit tends to be disruptive and is off
   185   might or might not improve the user experience, and is off by
   202   by default. Enabling it might or might not improve the user
   186   default.</li>
   203   experience.<br/>
   187 
   204   <em>Workaround:</em> Disable MacOSX plugin.</li></li>
   188   <li>Java 7 on MacOSX is officially supported on Lion and Mountain
   205 
   189   Lion, but not Snow Leopard. It usually works on the latter, but
   206   <li>Java 7 on MacOSX is officially supported on Lion and Mountain Lion,
   190   there might be some instabilities.</li>
   207   but not Snow Leopard. It usually works on the latter, although with a
       
   208   small risk of instabilities.<br/>
       
   209   <em>Workaround:</em> Update to OS X Mountain Lion.</li>
   191 </ul>
   210 </ul>
   192 
   211 
   193 
   212 
   194 <h2>Licenses and home sites of contributing systems</h2>
   213 <h2>Licenses and home sites of contributing systems</h2>
   195 
   214 
   196 <ul>
   215 <ul>
   197 
   216 
   198 <li>Isabelle: BSD-style</li>
   217 <li>Isabelle: BSD-style</li>
   199 
   218 
       
   219 <li>Poly/ML: LGPL <br/> http://www.polyml.org </li>
       
   220 
   200 <li>Scala: BSD-style <br/> http://www.scala-lang.org</li>
   221 <li>Scala: BSD-style <br/> http://www.scala-lang.org</li>
   201 
   222 
   202 <li>jEdit: GPL (with special cases) <br/> http://www.jedit.org/</li>
   223 <li>jEdit: GPL (with special cases) <br/> http://www.jedit.org</li>
   203 
   224 
   204 <li>Lobo/Cobra: GPL and LGPL <br/> http://lobobrowser.org/</li>
   225 <li>JFreeChart: LGPL <br/> http://www.jfree.org</li>
       
   226 
       
   227 <li>Lobo/Cobra: GPL and LGPL <br/> http://lobobrowser.org</li>
   205 
   228 
   206 </ul>
   229 </ul>
   207 
   230 
   208 </body>
   231 </body>
   209 </html>
   232 </html>