src/Tools/jEdit/src/jedit_lib.scala
changeset 53784 322a3ff42b33
parent 53712 ea51046be71b
child 53786 064cb0458071
equal deleted inserted replaced
53783:f5e9d182f645 53784:322a3ff42b33
     8 
     8 
     9 
     9 
    10 import isabelle._
    10 import isabelle._
    11 
    11 
    12 import java.awt.{Component, Container, GraphicsEnvironment, Point, Rectangle, Dimension}
    12 import java.awt.{Component, Container, GraphicsEnvironment, Point, Rectangle, Dimension}
    13 import java.awt.event.{KeyEvent, KeyListener}
    13 import java.awt.event.{InputEvent, KeyEvent, KeyListener}
    14 import javax.swing.{Icon, ImageIcon, JWindow, SwingUtilities}
    14 import javax.swing.{Icon, ImageIcon, JWindow, SwingUtilities}
    15 
    15 
    16 import scala.annotation.tailrec
    16 import scala.annotation.tailrec
    17 
    17 
    18 import org.gjt.sp.jedit.{jEdit, Buffer, View, GUIUtilities}
    18 import org.gjt.sp.jedit.{jEdit, Buffer, View, GUIUtilities, Debug}
    19 import org.gjt.sp.jedit.gui.KeyEventWorkaround
    19 import org.gjt.sp.jedit.gui.KeyEventWorkaround
    20 import org.gjt.sp.jedit.buffer.JEditBuffer
    20 import org.gjt.sp.jedit.buffer.JEditBuffer
    21 import org.gjt.sp.jedit.textarea.{JEditTextArea, TextArea, TextAreaPainter}
    21 import org.gjt.sp.jedit.textarea.{JEditTextArea, TextArea, TextAreaPainter}
    22 
    22 
    23 
    23 
   154   /* get text */
   154   /* get text */
   155 
   155 
   156   def try_get_text(buffer: JEditBuffer, range: Text.Range): Option[String] =
   156   def try_get_text(buffer: JEditBuffer, range: Text.Range): Option[String] =
   157     try { Some(buffer.getText(range.start, range.length)) }
   157     try { Some(buffer.getText(range.start, range.length)) }
   158     catch { case _: ArrayIndexOutOfBoundsException => None }
   158     catch { case _: ArrayIndexOutOfBoundsException => None }
       
   159 
       
   160   def try_get_text(text: String, range: Text.Range): Option[String] =
       
   161     try { Some(text.substring(range.start, range.stop)) }
       
   162     catch { case _: IndexOutOfBoundsException => None }
   159 
   163 
   160 
   164 
   161   /* buffer range */
   165   /* buffer range */
   162 
   166 
   163   def buffer_range(buffer: JEditBuffer): Text.Range =
   167   def buffer_range(buffer: JEditBuffer): Text.Range =
   334       def keyTyped(evt: KeyEvent) { process_key_event(evt, key_typed) }
   338       def keyTyped(evt: KeyEvent) { process_key_event(evt, key_typed) }
   335       def keyPressed(evt: KeyEvent) { process_key_event(evt, key_pressed) }
   339       def keyPressed(evt: KeyEvent) { process_key_event(evt, key_pressed) }
   336       def keyReleased(evt: KeyEvent) { process_key_event(evt, key_released) }
   340       def keyReleased(evt: KeyEvent) { process_key_event(evt, key_released) }
   337     }
   341     }
   338   }
   342   }
       
   343 
       
   344   def special_key(evt: KeyEvent): Boolean =
       
   345   {
       
   346     // cf. 5.1.0/jEdit/org/gjt/sp/jedit/gui/KeyEventWorkaround.java
       
   347     val mod = evt.getModifiers
       
   348     (mod & InputEvent.CTRL_MASK) != 0 && (mod & InputEvent.ALT_MASK) == 0 ||
       
   349     (mod & InputEvent.CTRL_MASK) == 0 && (mod & InputEvent.ALT_MASK) != 0 &&
       
   350       !Debug.ALT_KEY_PRESSED_DISABLED ||
       
   351     (mod & InputEvent.META_MASK) != 0
       
   352   }
   339 }
   353 }
   340 
   354