src/Tools/jEdit/src/bibtex_jedit.scala
changeset 64828 e837f6bf653c
parent 64817 0bb6b582bb4f
child 64829 07f209e957bc
equal deleted inserted replaced
64827:4ef1eb75f1cd 64828:e837f6bf653c
    26 
    26 
    27 
    27 
    28 object Bibtex_JEdit
    28 object Bibtex_JEdit
    29 {
    29 {
    30   /** buffer model **/
    30   /** buffer model **/
    31 
       
    32   /* file type */
       
    33 
       
    34   def check(buffer: Buffer): Boolean =
       
    35     JEdit_Lib.buffer_name(buffer).endsWith(".bib")
       
    36 
       
    37   def check(name: Document.Node.Name): Boolean =
       
    38     name.node.endsWith(".bib")
       
    39 
       
    40 
       
    41   /* parse entries */
       
    42 
       
    43   def parse_entries(text: String): List[(String, Text.Offset)] =
       
    44   {
       
    45     val chunks =
       
    46       try { Bibtex.parse(text) }
       
    47       catch { case ERROR(msg) => Output.warning(msg); Nil }
       
    48 
       
    49     val result = new mutable.ListBuffer[(String, Text.Offset)]
       
    50     var offset = 0
       
    51     for (chunk <- chunks) {
       
    52       if (chunk.name != "" && !chunk.is_command) result += ((chunk.name, offset))
       
    53       offset += chunk.source.length
       
    54     }
       
    55     result.toList
       
    56   }
       
    57 
       
    58 
    31 
    59   /* retrieve entries */
    32   /* retrieve entries */
    60 
    33 
    61   def entries_iterator(): Iterator[(String, Buffer, Text.Offset)] =
    34   def entries_iterator(): Iterator[(String, Buffer, Text.Offset)] =
    62     for {
    35     for {
   109   {
    82   {
   110     text_area0 match {
    83     text_area0 match {
   111       case text_area: TextArea =>
    84       case text_area: TextArea =>
   112         text_area.getBuffer match {
    85         text_area.getBuffer match {
   113           case buffer: Buffer
    86           case buffer: Buffer
   114           if (check(buffer) && buffer.isEditable) =>
    87           if (Bibtex.check_name(JEdit_Lib.buffer_name(buffer)) && buffer.isEditable) =>
   115             val menu = new JMenu("BibTeX entries")
    88             val menu = new JMenu("BibTeX entries")
   116             for (entry <- Bibtex.entries) {
    89             for (entry <- Bibtex.entries) {
   117               val item = new JMenuItem(entry.kind)
    90               val item = new JMenuItem(entry.kind)
   118               item.addActionListener(new ActionListener {
    91               item.addActionListener(new ActionListener {
   119                 def actionPerformed(evt: ActionEvent): Unit =
    92                 def actionPerformed(evt: ActionEvent): Unit =