[Libreoffice-commits] core.git: scripting/java

Andreas Heinisch (via logerrit) logerrit at kemper.freedesktop.org
Thu May 16 09:32:43 UTC 2019


 scripting/java/com/sun/star/script/framework/provider/beanshell/PlainSourceView.java |   22 ++++++++++
 1 file changed, 22 insertions(+)

New commits:
commit e875a317c4adf00bbad00fb8176c26cd1a66973e
Author:     Andreas Heinisch <andreas.heinisch at yahoo.de>
AuthorDate: Mon May 13 13:08:29 2019 +0200
Commit:     Samuel Mehrbrodt <Samuel.Mehrbrodt at cib.de>
CommitDate: Thu May 16 11:32:06 2019 +0200

    tdf#97635 Added unindentation using shift-tab (mimicked eclipse behavior)
    
    Change-Id: Iaf64451c92f3465751032dde9c283141e548b3ca
    Reviewed-on: https://gerrit.libreoffice.org/72228
    Tested-by: Jenkins
    Reviewed-by: Samuel Mehrbrodt <Samuel.Mehrbrodt at cib.de>

diff --git a/scripting/java/com/sun/star/script/framework/provider/beanshell/PlainSourceView.java b/scripting/java/com/sun/star/script/framework/provider/beanshell/PlainSourceView.java
index f75b1e75fb0e..581ef48138c8 100644
--- a/scripting/java/com/sun/star/script/framework/provider/beanshell/PlainSourceView.java
+++ b/scripting/java/com/sun/star/script/framework/provider/beanshell/PlainSourceView.java
@@ -45,6 +45,9 @@ import javax.swing.undo.UndoManager;
 import java.util.List;
 import java.util.ArrayList;
 
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
 public class PlainSourceView extends JScrollPane implements
     ScriptSourceView, DocumentListener {
 
@@ -171,6 +174,25 @@ public class PlainSourceView extends JScrollPane implements
         ta.addKeyListener(new KeyAdapter(){
             @Override
             public void keyReleased(KeyEvent ke){
+                // if shift + tab was pressed, remove the first tab before any code begins
+                if (ke.isShiftDown() && ke.getKeyCode() == KeyEvent.VK_TAB) {
+                    try {
+                        int caretOffset = ta.getCaretPosition();
+                        int lineOffset = ta.getLineOfOffset(caretOffset);
+                        int startOffset = ta.getLineStartOffset(lineOffset);
+                        int endOffset = ta.getLineEndOffset(lineOffset);
+
+                        Pattern pattern = Pattern.compile("^ *(\\t)");
+                        Matcher matcher = pattern.matcher(ta.getText(startOffset, endOffset - startOffset));
+
+                        if (matcher.find()) {
+                            ta.replaceRange(null, startOffset + matcher.start(1), startOffset + matcher.end(1));
+                        }
+                    } catch (BadLocationException e) {
+                        // could not find correct location of the tab
+                    }
+                }
+
                 if(ke.getKeyCode() == KeyEvent.VK_SPACE || ke.getKeyCode() == KeyEvent.VK_ENTER){
                     compoundEdit.end();
                     undoManager.addEdit(compoundEdit);


More information about the Libreoffice-commits mailing list