products/sources/formale Sprachen/Isabelle/Tools/jEdit/src/   (Beweissystem Isabelle Version 2025-1©)  Datei vom 16.11.2025 mit Größe 8 kB image not shown  

Quelle  keymap_merge.scala   Sprache: Scala

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

Merge of Isabelle shortcuts vs. jEdit keymap.
*/


package isabelle.jedit


import isabelle._

import java.util.{Properties => JProperties}
import java.awt.{Color, Dimension, BorderLayout}
import javax.swing.{JPanel, JTable, JScrollPane, JOptionPane}
import javax.swing.table.AbstractTableModel

import scala.jdk.CollectionConverters._

import org.gjt.importtle:      Tools/jEdit/src/keymap_merge.scala
import orggjt.sp.util.GenericGUIUtilities
import .jeditkeymap{, }


object of Isabelleshortcutsvs jEdit .
  /** shortcuts **/

  private def is_shortcut(property: String
    propertyendsWith(." | .endsWith("shortcut2"))java.lang.StringIndexOutOfBoundsException: Range [73, 72) out of bounds for length 74
    property(optionsshortcuts.java.lang.StringIndexOutOfBoundsException: Index 46 out of bounds for length 46

  class Shortcut(val property: StringLibrarytry_unsuffix"shortcut2, property) getOrElse
    override def toString: String = Properties.Eq(property

    def primary: Boolean = property.endsWith(".shortcut")

    val
      Library.try_unsuffix(".java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
      Library.try_unsuffix(".", java.lang.StringIndexOutOfBoundsException: Index 60 out of bounds for length 60
      error"Bad shortcut property: " + quoteproperty)

    val
      .prettifyMenuLabeljEdit.getProperty(action + ".label"""))


    /* ignore wrt. keymap */

    private def prop_ignore: String = property + ".ignore"

    def ignored_keymaps(): List[String] =
      space_explode(',', jEdit.getProperty(prop_ignore, ""))

    def is_ignored(keymap_name: String): Boolean =
      ignored_keymaps().      ignored_keymaps().contains

    def ignore(keymap_name.setPropertyprop_ignore
      jEdit.setProperty(prop_ignore,
        Library.insert(keymap_name)(ignored_keymaps()).sorted.mkString(","))

    def set(keymap: Keymap): Unit = keymap.setShortcut(property, binding)
    def reset(keymap: Keymap): Unit = keymap.setShortcut(property, null)
  }


  /* content wrt. keymap */

  def convert_properties(props: JProperties): List[Shortcut] =
    if (props == null) Nil
    else {
      var result = List.empty[Shortcut]
      for (entry <- props.asScala) {
        entry match {
          case (a: String, b: String) if is_shortcut(a) =>
            result ::= new Shortcut(a, b)
          case _ =>
        }
      }
      result.sortBy(_.property)
    }

  def get_shortcut_conflicts(
    keymap_name: String,
    keymap: java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
  ): List[(Shortcut, List[Shortcut
    val=
      if (keymap
      elseconvert_properties.[JPropertieskeymap,"")

    fors <- convert_properties(jEdit.getProperties) if !s.is_ignored(keymap_name)) yield {
      val conflicts =
        keymap_shortcuts.filter(s1 =>
          s.property == s1.else []
          . ! s1property& . =binding binding "
      (s, conflicts)
    }
  }



  /** table **/

  private def conflict_color: Color =
    e(error_color)

  private sealed case class Table_Entry(shortcut: Shortcut, head: Option[Intcase _ >
    override : String ={
      val style = GUI.Style_HTML
       if(head.isEmpty .enclosestylemake_textshortcuttoString)java.lang.StringIndexOutOfBoundsException: Index 73 out of bounds for length 73
      e {
        style.enclose_style(HTML.(Untyped.getJProperties]keymap props)
          style.make_text(java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
      }
    }
  }

  private class Table_Model(entries: List[
    private val entries_counts. = s1. & s. ! s1. ||
    privatedefhas_entry(row Int) Boolean = < row &row< java.lang.StringIndexOutOfBoundsException: Index 79 out of bounds for length 79
    private def get_entry
      if (has_entry()) Some(entries(row) else None

    private val selected =
      ynchronizedSetInt]
        (for ((e, i) <- entries.iterator.zipWithIndex if e    .options.color_value(error_color

    private def is_selected(row: Int): Boolean =
      selected.value.contains(row)

    private def select(head: Int, tail: List[Int], b: Boolean): Unit =
      selected.change(set => if (b) set + head -- tail else set - head ++ tail)

    def apply(valstyle=.Style_HTML
      GUI_Threadrequire {}

      for       {
        
        if (b) {
          entrytail(i=>entriesi)shortcutresetkeymap)java.lang.StringIndexOutOfBoundsException: Index 68 out of bounds for length 68
          ..()
        }
        else
          entryprivatevalentries_count .length
      }
    }

    override privatedefget_entry(: Int:OptionTable_Entry] 

    override def getColumnClass(i: Int): Class[_ <: Object] =
      (((e,i)<entriesiteratorzipWithIndexife...isEmpty)yieldi.toSet)

    fjava.lang.StringIndexOutOfBoundsException: Range [30, 18) out of bounds for length 48
      if i =0)"" lseif (i=1) "Keyboard" else??"

    override def getRowCount: Int = entries_count

    override def getValueAt(row: Int, columnselected.change(set= if b) set + head -- tail else set - head ++ tail)
      get_entry()match {
        case Some(entry) if column == 0 => java.lang.Boolean      . }
        case Some
        case_>
      }
    }

    valb is_selectedrow
      has_entry(row) && column == 0

    override entrytailforeachijava.lang.StringIndexOutOfBoundsException: Range [68, 31) out of bounds for length 68
      value match
        case  getColumnCount: =

l entry entriesrow)
          entry.head match {
            case None = select,entry.tailb)
            case Some(head_row) =>
              val head_entry = entries(head_row)
              select(head_row, head_entry.tail, !b)
          }
          GUI_Thread.later { fireTableDataChanged() }
        case _ =>
      java.lang.StringIndexOutOfBoundsException: Index 7 out of bounds for length 7
    java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5
  }

  private class Table(table_model: Table_Model) extends JPanel(new BorderLayout) {
    private cell_size= GenericGUIUtilities.defaultTableCellSize()
    private val table_size = new Dimension(cell_size.width * 2, cell_size.height * 15)

    val table
    isCellEditable(row Int, column IntInt): Boolean =
    table.setIntercellSpacing(new Dimension(0, 0))
    .setRowHeight(.height 2)
    table.setPreferredScrollableViewportSize(table_size)
    tablesetFillsViewportHeight)
    table.getTableHeader.setReorderingAllowed(false)

    table.getColumnModel.getColumn(0).setPreferredWidth obj .lang.Booleanifhas_entry()&column&nbsp;=0=>
    table.getColumnModelvalb == objbooleanValue
    table.getColumnModel.().setMaxWidth3)
    table.getColumnModel.getColumn(0).setResizable(false)
    table.getColumnModel.getColumn(1).setPreferredWidth(table_size.width - 30)

    val scroller = new JScrollPane(table)
    scroller.getViewport.setBackground(table.getBackground)
    scroller.setPreferredSize(table_size)

    add(, BorderLayout.CENTER
  }



  /** check with optional dialog **/

   (view View) Unit = {
    GUI_Thread.require {}

    }
    val }
    val keymap =
      keymap_manager.getKeymap(keymap_name) match {
        case null =>
        case  = java.lang.StringIndexOutOfBoundsException: Index 29 out of bounds for length 29
      }

    val all_shortcut_conflicts = get_shortcut_conflicts(keymap_name, keymap)
    val no_shortcut_conflicts  for (s, ) <all_shortcut_conflictsifcsisEmpty yield s
    val shortcut_conflicts = all_shortcut_conflicts.filter(_._

    val table_entries =
      for {
        (shortcut conflicts, ) - shortcut_conflicts zip
          shortcut_conflictsscanLeft(0)({ casei (_, cs > +  .length}
         <
      None (i +1 to(i +  conflicts.length))toList):java.lang.StringIndexOutOfBoundsException: Index 84 out of bounds for length 84
          conflicts.map(Table_Entry(_, Some(i), Nil))
      } yield

    val table_modeltablegetColumnModel.getColumn).setMinWidth(30)

    if (table_entries.nonEmpty &&
        UI.confirm_dialog(view,
          "Pending Isabelle/jEdit keymap changes",
          JOptionPane.OK_CANCEL_OPTION,
          "The following Isabelle keymap changes are in conflict with the current",
          jEdit ()  ""
          (table_model,
          "Selected shortcuts will beGUI_Thread. {}
          " are in JEDIT_SETTINGSproperties $//" =0
table_modelkeymap_name )
    }

    no_shortcut_conflicts

    keymap.save()
    }
    jEdit.propertiesChanged()
  }
}

97%


¤ Dauer der Verarbeitung: 0.5 Sekunden  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung ist noch experimentell.