src/Tools/jEdit/src/isabelle_actions.scala
author wenzelm
Sun, 25 Nov 2012 21:10:29 +0100
changeset 50206 6626bc5ed053
parent 50205 788c8263e634
permissions -rw-r--r--
tuned signature; uniform view.fontsize fallback;
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
50183
2b3e24e1c9e7 improved editing support for control styles;
wenzelm
parents:
diff changeset
     1
/*  Title:      Tools/jEdit/src/plugin.scala
2b3e24e1c9e7 improved editing support for control styles;
wenzelm
parents:
diff changeset
     2
    Author:     Makarius
2b3e24e1c9e7 improved editing support for control styles;
wenzelm
parents:
diff changeset
     3
2b3e24e1c9e7 improved editing support for control styles;
wenzelm
parents:
diff changeset
     4
Convenience actions for Isabelle/jEdit.
2b3e24e1c9e7 improved editing support for control styles;
wenzelm
parents:
diff changeset
     5
*/
2b3e24e1c9e7 improved editing support for control styles;
wenzelm
parents:
diff changeset
     6
2b3e24e1c9e7 improved editing support for control styles;
wenzelm
parents:
diff changeset
     7
package isabelle.jedit
2b3e24e1c9e7 improved editing support for control styles;
wenzelm
parents:
diff changeset
     8
2b3e24e1c9e7 improved editing support for control styles;
wenzelm
parents:
diff changeset
     9
2b3e24e1c9e7 improved editing support for control styles;
wenzelm
parents:
diff changeset
    10
import isabelle._
2b3e24e1c9e7 improved editing support for control styles;
wenzelm
parents:
diff changeset
    11
50198
0c7b351a6871 added convenience actions isabelle.increase-font-size and isabelle.decrease-font-size;
wenzelm
parents: 50187
diff changeset
    12
import org.gjt.sp.jedit.{jEdit, View, Buffer}
50183
2b3e24e1c9e7 improved editing support for control styles;
wenzelm
parents:
diff changeset
    13
import org.gjt.sp.jedit.textarea.JEditTextArea
2b3e24e1c9e7 improved editing support for control styles;
wenzelm
parents:
diff changeset
    14
2b3e24e1c9e7 improved editing support for control styles;
wenzelm
parents:
diff changeset
    15
2b3e24e1c9e7 improved editing support for control styles;
wenzelm
parents:
diff changeset
    16
object Isabelle_Actions
2b3e24e1c9e7 improved editing support for control styles;
wenzelm
parents:
diff changeset
    17
{
50198
0c7b351a6871 added convenience actions isabelle.increase-font-size and isabelle.decrease-font-size;
wenzelm
parents: 50187
diff changeset
    18
  /* font size */
0c7b351a6871 added convenience actions isabelle.increase-font-size and isabelle.decrease-font-size;
wenzelm
parents: 50187
diff changeset
    19
0c7b351a6871 added convenience actions isabelle.increase-font-size and isabelle.decrease-font-size;
wenzelm
parents: 50187
diff changeset
    20
  def change_font_size(view: View, change: Int => Int)
0c7b351a6871 added convenience actions isabelle.increase-font-size and isabelle.decrease-font-size;
wenzelm
parents: 50187
diff changeset
    21
  {
50206
6626bc5ed053 tuned signature;
wenzelm
parents: 50205
diff changeset
    22
    val size = change(jEdit.getIntegerProperty("view.fontsize", 16)) max 5
6626bc5ed053 tuned signature;
wenzelm
parents: 50205
diff changeset
    23
    jEdit.setIntegerProperty("view.fontsize", size)
50198
0c7b351a6871 added convenience actions isabelle.increase-font-size and isabelle.decrease-font-size;
wenzelm
parents: 50187
diff changeset
    24
    jEdit.propertiesChanged()
0c7b351a6871 added convenience actions isabelle.increase-font-size and isabelle.decrease-font-size;
wenzelm
parents: 50187
diff changeset
    25
    jEdit.saveSettings()
0c7b351a6871 added convenience actions isabelle.increase-font-size and isabelle.decrease-font-size;
wenzelm
parents: 50187
diff changeset
    26
    view.getStatus.setMessageAndClear("Text font size: " + size)
0c7b351a6871 added convenience actions isabelle.increase-font-size and isabelle.decrease-font-size;
wenzelm
parents: 50187
diff changeset
    27
  }
0c7b351a6871 added convenience actions isabelle.increase-font-size and isabelle.decrease-font-size;
wenzelm
parents: 50187
diff changeset
    28
0c7b351a6871 added convenience actions isabelle.increase-font-size and isabelle.decrease-font-size;
wenzelm
parents: 50187
diff changeset
    29
  def increase_font_size(view: View): Unit = change_font_size(view, i => i + ((i / 10) max 1))
0c7b351a6871 added convenience actions isabelle.increase-font-size and isabelle.decrease-font-size;
wenzelm
parents: 50187
diff changeset
    30
  def decrease_font_size(view: View): Unit = change_font_size(view, i => i - ((i / 10) max 1))
0c7b351a6871 added convenience actions isabelle.increase-font-size and isabelle.decrease-font-size;
wenzelm
parents: 50187
diff changeset
    31
0c7b351a6871 added convenience actions isabelle.increase-font-size and isabelle.decrease-font-size;
wenzelm
parents: 50187
diff changeset
    32
50183
2b3e24e1c9e7 improved editing support for control styles;
wenzelm
parents:
diff changeset
    33
  /* full checking */
2b3e24e1c9e7 improved editing support for control styles;
wenzelm
parents:
diff changeset
    34
2b3e24e1c9e7 improved editing support for control styles;
wenzelm
parents:
diff changeset
    35
  def check_buffer(buffer: Buffer)
2b3e24e1c9e7 improved editing support for control styles;
wenzelm
parents:
diff changeset
    36
  {
50205
788c8263e634 renamed main plugin object to PIDE;
wenzelm
parents: 50198
diff changeset
    37
    PIDE.document_model(buffer) match {
50183
2b3e24e1c9e7 improved editing support for control styles;
wenzelm
parents:
diff changeset
    38
      case None =>
2b3e24e1c9e7 improved editing support for control styles;
wenzelm
parents:
diff changeset
    39
      case Some(model) => model.full_perspective()
2b3e24e1c9e7 improved editing support for control styles;
wenzelm
parents:
diff changeset
    40
    }
2b3e24e1c9e7 improved editing support for control styles;
wenzelm
parents:
diff changeset
    41
  }
2b3e24e1c9e7 improved editing support for control styles;
wenzelm
parents:
diff changeset
    42
50205
788c8263e634 renamed main plugin object to PIDE;
wenzelm
parents: 50198
diff changeset
    43
  def cancel_execution() { PIDE.session.cancel_execution() }
50183
2b3e24e1c9e7 improved editing support for control styles;
wenzelm
parents:
diff changeset
    44
2b3e24e1c9e7 improved editing support for control styles;
wenzelm
parents:
diff changeset
    45
2b3e24e1c9e7 improved editing support for control styles;
wenzelm
parents:
diff changeset
    46
  /* control styles */
2b3e24e1c9e7 improved editing support for control styles;
wenzelm
parents:
diff changeset
    47
2b3e24e1c9e7 improved editing support for control styles;
wenzelm
parents:
diff changeset
    48
  def control_sub(text_area: JEditTextArea)
50187
b5a09812abc4 special handling of control symbols in Symbols dockable;
wenzelm
parents: 50183
diff changeset
    49
  { Token_Markup.edit_control_style(text_area, Symbol.sub_decoded) }
50183
2b3e24e1c9e7 improved editing support for control styles;
wenzelm
parents:
diff changeset
    50
2b3e24e1c9e7 improved editing support for control styles;
wenzelm
parents:
diff changeset
    51
  def control_sup(text_area: JEditTextArea)
50187
b5a09812abc4 special handling of control symbols in Symbols dockable;
wenzelm
parents: 50183
diff changeset
    52
  { Token_Markup.edit_control_style(text_area, Symbol.sup_decoded) }
50183
2b3e24e1c9e7 improved editing support for control styles;
wenzelm
parents:
diff changeset
    53
2b3e24e1c9e7 improved editing support for control styles;
wenzelm
parents:
diff changeset
    54
  def control_isub(text_area: JEditTextArea)
50187
b5a09812abc4 special handling of control symbols in Symbols dockable;
wenzelm
parents: 50183
diff changeset
    55
  { Token_Markup.edit_control_style(text_area, Symbol.isub_decoded) }
50183
2b3e24e1c9e7 improved editing support for control styles;
wenzelm
parents:
diff changeset
    56
2b3e24e1c9e7 improved editing support for control styles;
wenzelm
parents:
diff changeset
    57
  def control_isup(text_area: JEditTextArea)
50187
b5a09812abc4 special handling of control symbols in Symbols dockable;
wenzelm
parents: 50183
diff changeset
    58
  { Token_Markup.edit_control_style(text_area, Symbol.isup_decoded) }
50183
2b3e24e1c9e7 improved editing support for control styles;
wenzelm
parents:
diff changeset
    59
2b3e24e1c9e7 improved editing support for control styles;
wenzelm
parents:
diff changeset
    60
  def control_bold(text_area: JEditTextArea)
50187
b5a09812abc4 special handling of control symbols in Symbols dockable;
wenzelm
parents: 50183
diff changeset
    61
  { Token_Markup.edit_control_style(text_area, Symbol.bold_decoded) }
50183
2b3e24e1c9e7 improved editing support for control styles;
wenzelm
parents:
diff changeset
    62
2b3e24e1c9e7 improved editing support for control styles;
wenzelm
parents:
diff changeset
    63
  def control_reset(text_area: JEditTextArea)
50187
b5a09812abc4 special handling of control symbols in Symbols dockable;
wenzelm
parents: 50183
diff changeset
    64
  { Token_Markup.edit_control_style(text_area, "") }
50183
2b3e24e1c9e7 improved editing support for control styles;
wenzelm
parents:
diff changeset
    65
2b3e24e1c9e7 improved editing support for control styles;
wenzelm
parents:
diff changeset
    66
2b3e24e1c9e7 improved editing support for control styles;
wenzelm
parents:
diff changeset
    67
  /* block styles */
2b3e24e1c9e7 improved editing support for control styles;
wenzelm
parents:
diff changeset
    68
2b3e24e1c9e7 improved editing support for control styles;
wenzelm
parents:
diff changeset
    69
  private def enclose_input(text_area: JEditTextArea, s1: String, s2: String)
2b3e24e1c9e7 improved editing support for control styles;
wenzelm
parents:
diff changeset
    70
  {
2b3e24e1c9e7 improved editing support for control styles;
wenzelm
parents:
diff changeset
    71
    s1.foreach(text_area.userInput(_))
2b3e24e1c9e7 improved editing support for control styles;
wenzelm
parents:
diff changeset
    72
    s2.foreach(text_area.userInput(_))
2b3e24e1c9e7 improved editing support for control styles;
wenzelm
parents:
diff changeset
    73
    s2.foreach(_ => text_area.goToPrevCharacter(false))
2b3e24e1c9e7 improved editing support for control styles;
wenzelm
parents:
diff changeset
    74
  }
2b3e24e1c9e7 improved editing support for control styles;
wenzelm
parents:
diff changeset
    75
2b3e24e1c9e7 improved editing support for control styles;
wenzelm
parents:
diff changeset
    76
  def input_bsub(text_area: JEditTextArea)
2b3e24e1c9e7 improved editing support for control styles;
wenzelm
parents:
diff changeset
    77
  { enclose_input(text_area, Symbol.bsub_decoded, Symbol.esub_decoded) }
2b3e24e1c9e7 improved editing support for control styles;
wenzelm
parents:
diff changeset
    78
2b3e24e1c9e7 improved editing support for control styles;
wenzelm
parents:
diff changeset
    79
  def input_bsup(text_area: JEditTextArea)
2b3e24e1c9e7 improved editing support for control styles;
wenzelm
parents:
diff changeset
    80
  { enclose_input(text_area, Symbol.bsup_decoded, Symbol.esup_decoded) }
2b3e24e1c9e7 improved editing support for control styles;
wenzelm
parents:
diff changeset
    81
}
2b3e24e1c9e7 improved editing support for control styles;
wenzelm
parents:
diff changeset
    82