Procházet zdrojové kódy

Support for core changes.

Change-Id: Id53cffeafe14198df4aeb6f18174d56d33fe9d81
Depends-On: I24dfd19a887a4bafe767aa24377d6dbeb305f77d
Reviewed-on: http://gerrit.dmdirc.com/3868
Reviewed-by: Greg Holmes <greg@dmdirc.com>
Automatic-Compile: DMDirc Build Manager
changes/68/3868/2
Chris Smith před 9 roky
rodič
revize
b7c845e3c2

+ 34
- 3
tabcompletion_bash/src/com/dmdirc/addons/tabcompletion_bash/BashStyle.java Zobrazit soubor

@@ -25,11 +25,12 @@ package com.dmdirc.addons.tabcompletion_bash;
25 25
 import com.dmdirc.FrameContainer;
26 26
 import com.dmdirc.ui.input.AdditionalTabTargets;
27 27
 import com.dmdirc.ui.input.TabCompleter;
28
-import com.dmdirc.ui.input.TabCompleterResult;
28
+import com.dmdirc.ui.input.TabCompletionMatches;
29 29
 import com.dmdirc.ui.input.tabstyles.TabCompletionResult;
30 30
 import com.dmdirc.ui.input.tabstyles.TabCompletionStyle;
31 31
 
32 32
 import java.awt.Toolkit;
33
+import java.util.Locale;
33 34
 
34 35
 public class BashStyle implements TabCompletionStyle {
35 36
 
@@ -60,7 +61,7 @@ public class BashStyle implements TabCompletionStyle {
60 61
             final int end, final boolean shiftPressed,
61 62
             final AdditionalTabTargets additional) {
62 63
         final String word = original.substring(start, end);
63
-        final TabCompleterResult res = tabCompleter.complete(word, additional);
64
+        final TabCompletionMatches res = tabCompleter.complete(word, additional);
64 65
 
65 66
         if (start == lastPosition && word.equals(lastWord)) {
66 67
             tabCount++;
@@ -85,7 +86,7 @@ public class BashStyle implements TabCompletionStyle {
85 86
         } else {
86 87
             // Multiple results
87 88
 
88
-            final String sub = res.getBestSubstring();
89
+            final String sub = getBestSubstring(res);
89 90
             if (sub.equalsIgnoreCase(word) && tabCount >= 2) {
90 91
                 window.addLine("tabCompletion", res.toString());
91 92
 
@@ -98,4 +99,34 @@ public class BashStyle implements TabCompletionStyle {
98 99
         }
99 100
     }
100 101
 
102
+    /**
103
+     * Returns the longest substring that matches all results.
104
+     *
105
+     * @return longest possible substring matching all results
106
+     */
107
+    private String getBestSubstring(final TabCompletionMatches res) {
108
+        if (res.getResultCount() == 0) {
109
+            return "";
110
+        }
111
+
112
+        final boolean caseSensitive = window.getConfigManager()
113
+                .getOptionBool("tabcompletion", "casesensitive");
114
+
115
+        String substring = res.getResults().get(0);
116
+        for (String entry : res.getResults()) {
117
+            if (caseSensitive) {
118
+                while (!entry.startsWith(substring)) {
119
+                    substring = substring.substring(0, substring.length() - 1);
120
+                }
121
+            } else {
122
+                while (!entry.toLowerCase(Locale.getDefault()).startsWith(
123
+                        substring.toLowerCase(Locale.getDefault()))) {
124
+                    substring = substring.substring(0, substring.length() - 1);
125
+                }
126
+            }
127
+        }
128
+
129
+        return substring;
130
+    }
131
+
101 132
 }

+ 3
- 3
tabcompletion_mirc/src/com/dmdirc/addons/tabcompletion_mirc/MircStyle.java Zobrazit soubor

@@ -26,7 +26,7 @@ import com.dmdirc.Channel;
26 26
 import com.dmdirc.FrameContainer;
27 27
 import com.dmdirc.ui.input.AdditionalTabTargets;
28 28
 import com.dmdirc.ui.input.TabCompleter;
29
-import com.dmdirc.ui.input.TabCompleterResult;
29
+import com.dmdirc.ui.input.TabCompletionMatches;
30 30
 import com.dmdirc.ui.input.tabstyles.TabCompletionResult;
31 31
 import com.dmdirc.ui.input.tabstyles.TabCompletionStyle;
32 32
 
@@ -63,7 +63,7 @@ public class MircStyle implements TabCompletionStyle {
63 63
         final String word = original.substring(start, end);
64 64
         final String target;
65 65
         if (word.equals(lastWord)) {
66
-            final TabCompleterResult res = tabCompleter.complete(tabString, additional);
66
+            final TabCompletionMatches res = tabCompleter.complete(tabString, additional);
67 67
             Collections.sort(res.getResults(), String.CASE_INSENSITIVE_ORDER);
68 68
             // We're continuing to tab through
69 69
             target = res.getResults().get((res.getResults().indexOf(lastWord) + (shiftPressed ? -1
@@ -71,7 +71,7 @@ public class MircStyle implements TabCompletionStyle {
71 71
                     .getResults().size());
72 72
         } else {
73 73
             // New tab target
74
-            final TabCompleterResult res = tabCompleter.complete(word, additional);
74
+            final TabCompletionMatches res = tabCompleter.complete(word, additional);
75 75
 
76 76
             if (res.getResultCount() == 0) {
77 77
                 Toolkit.getDefaultToolkit().beep();

Načítá se…
Zrušit
Uložit