src/Tools/jEdit/src/isabelle_actions.scala
author wenzelm
Sat, 24 Nov 2012 14:50:19 +0100
changeset 50183 2b3e24e1c9e7
child 50187 b5a09812abc4
permissions -rw-r--r--
improved editing support for control styles; separate module for Isabelle actions;

/*  Title:      Tools/jEdit/src/plugin.scala
    Author:     Makarius

Convenience actions for Isabelle/jEdit.
*/

package isabelle.jedit


import isabelle._

import org.gjt.sp.jedit.Buffer
import org.gjt.sp.jedit.textarea.JEditTextArea


object Isabelle_Actions
{
  /* full checking */

  def check_buffer(buffer: Buffer)
  {
    Isabelle.document_model(buffer) match {
      case None =>
      case Some(model) => model.full_perspective()
    }
  }


  def cancel_execution() { Isabelle.session.cancel_execution() }

  /* control styles */

  def control_sub(text_area: JEditTextArea)
  { Token_Markup.edit_ctrl_style(text_area, Symbol.sub_decoded) }

  def control_sup(text_area: JEditTextArea)
  { Token_Markup.edit_ctrl_style(text_area, Symbol.sup_decoded) }

  def control_isub(text_area: JEditTextArea)
  { Token_Markup.edit_ctrl_style(text_area, Symbol.isub_decoded) }

  def control_isup(text_area: JEditTextArea)
  { Token_Markup.edit_ctrl_style(text_area, Symbol.isup_decoded) }

  def control_bold(text_area: JEditTextArea)
  { Token_Markup.edit_ctrl_style(text_area, Symbol.bold_decoded) }

  def control_reset(text_area: JEditTextArea)
  { Token_Markup.edit_ctrl_style(text_area, "") }


  /* block styles */

  private def enclose_input(text_area: JEditTextArea, s1: String, s2: String)
  {
    s1.foreach(text_area.userInput(_))
    s2.foreach(text_area.userInput(_))
    s2.foreach(_ => text_area.goToPrevCharacter(false))
  }

  def input_bsub(text_area: JEditTextArea)
  { enclose_input(text_area, Symbol.bsub_decoded, Symbol.esub_decoded) }

  def input_bsup(text_area: JEditTextArea)
  { enclose_input(text_area, Symbol.bsup_decoded, Symbol.esup_decoded) }
}