From f43d0f043b33f7719f125b18b1b645184115b6ec Mon Sep 17 00:00:00 2001 From: Christian Lenz Date: Fri, 12 Jun 2026 16:41:28 +0200 Subject: [PATCH] Remove textmate grammar registration by delete key and select the next one for fast deletion --- .../client/options/LanguageServersPanel.java | 28 +++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) diff --git a/ide/lsp.client/src/org/netbeans/modules/lsp/client/options/LanguageServersPanel.java b/ide/lsp.client/src/org/netbeans/modules/lsp/client/options/LanguageServersPanel.java index 741d08cc439c..983b59fabf50 100644 --- a/ide/lsp.client/src/org/netbeans/modules/lsp/client/options/LanguageServersPanel.java +++ b/ide/lsp.client/src/org/netbeans/modules/lsp/client/options/LanguageServersPanel.java @@ -19,6 +19,8 @@ package org.netbeans.modules.lsp.client.options; import java.awt.Component; +import java.awt.event.KeyAdapter; +import java.awt.event.KeyEvent; import java.beans.BeanInfo; import java.io.File; import java.util.ArrayList; @@ -49,6 +51,14 @@ final class LanguageServersPanel extends javax.swing.JPanel { this.usedIds = new HashSet<>(); initComponents(); this.languagesList.addListSelectionListener(evt -> setEnableDisable()); + this.languagesList.addKeyListener(new KeyAdapter() { + @Override + public void keyPressed(KeyEvent e) { + if (e.getKeyCode() == KeyEvent.VK_DELETE) { + removeSelected(); + } + } + }); setEnableDisable(); } @@ -164,10 +174,24 @@ private void editActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:ev }//GEN-LAST:event_editActionPerformed private void removeActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_removeActionPerformed - languages.remove(languagesList.getSelectedIndex()); - controller.changed(); + removeSelected(); }//GEN-LAST:event_removeActionPerformed + private void removeSelected() { + int idx = languagesList.getSelectedIndex(); + if (idx == -1) { + return; + } + languages.remove(idx); + controller.changed(); + + if (languages.getSize() > 0) { + int next = Math.min(idx, languages.getSize() - 1); + languagesList.setSelectedIndex(next); + languagesList.ensureIndexIsVisible(next); + } + } + private LanguageDescription openCustomizeDialog(LanguageDescription desc, String title) { LanguageDescriptionPanel panel = new LanguageDescriptionPanel(desc, usedIds); DialogDescriptor dd = new DialogDescriptor(panel, title, true, DialogDescriptor.OK_CANCEL_OPTION, DialogDescriptor.OK_OPTION, null);