equal
deleted
inserted
replaced
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 = |