This Macro insert a sequenced number at the beginning of each line of text.
How to use
Save the file below as …/jEdit/macros/Custom/Line_Enumerator.bsh
Run: Macros > Custom > Line Enumerator
Input the initial number and press ENTER at the dialog box:
Before:
aaaa
bbbb
cccc
….
After:
100,aaaa
101,bbbb
102,cccc
….
/* * Insert a sequencial number at the beginning of each line * Marcelo Gennari - 200216_130427 * */ import javax.swing.border.*; void showDialog() { title = "Line Enumerator"; dialog = new JDialog(view, title, false); content = new JPanel(new BorderLayout()); content.setBorder(new EmptyBorder(5, 5, 5, 5)); dialog.setContentPane(content); pwPanel = new JPanel(new GridLayout(1, 2)); pwLabel = new JLabel("Input the initial value:"); txtField = new JTextField(); pwPanel.add(pwLabel); pwPanel.add(txtField); content.add(pwPanel, BorderLayout.CENTER); buttonPanel = new JPanel(new GridLayout(1, 2)); buttonPanel.setBorder( new EmptyBorder(5, 0, 0, 0)); okButton = new JButton("OK"); cancelButton = new JButton("Cancel"); buttonPanel.add(okButton); buttonPanel.add(cancelButton); content.add(buttonPanel, BorderLayout.SOUTH); okButton.addActionListener(this); cancelButton.addActionListener(this); dialog.getRootPane().setDefaultButton(okButton); actionPerformed(e) { this.dialog.dispose(); cmd = e.getActionCommand(); if(cmd.equals("OK")) { lineEnumerator(this.txtField.getText().trim()); } return; } dialog.pack(); dialog.setLocationRelativeTo(view); dialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE); dialog.setVisible(true); } void lineEnumerator(String str) { int initialValue = 0; try { initialValue = Integer.parseInt(str); } catch (NumberFormatException nfe) { view.getStatus().setMessageAndClear("Please, insert a number. Digits only."); return; } // use line separator from current buffer String ls = buffer.getStringProperty("lineSeparator"); if (ls == null) { ls = jEdit.getProperty("buffer.lineSeparator"); } StringBuffer sbf = new StringBuffer(); int endL = textArea.getLineCount(); for (int i = 0; i < endL; i++) { inLine = textArea.getLineText(i); sbf.append(String.valueOf(initialValue + i)); sbf.append(","); sbf.append(inLine); sbf.append(ls); } textArea.setText(sbf.toString()); } showDialog();
Comentários