WorkspaceCompletionSupport.st
branchjv
changeset 5696 939848e2b8cb
parent 5221 d036f1df0408
parent 5695 6be2731ac044
child 5737 98bc0782ffa1
--- a/WorkspaceCompletionSupport.st	Mon May 02 06:46:50 2016 +0200
+++ b/WorkspaceCompletionSupport.st	Tue May 03 06:43:05 2016 +0200
@@ -1,5 +1,7 @@
 "{ Package: 'stx:libwidg' }"
 
+"{ NameSpace: Smalltalk }"
+
 EditTextViewCompletionSupport subclass:#WorkspaceCompletionSupport
 	instanceVariableNames:''
 	classVariableNames:''
@@ -66,7 +68,8 @@
 suggestionsArrived:suggestionsArg implementations:implementationsArg actions:actionsArg autoSelect:autoSelectArg
     "the background process has generated some suggestions"
 
-    |v suggestions implementations actions suggestionOffset keyAndSnippet indexOfSnippet|
+    |v numShown numFirst numLast numSkipped
+     suggestions implementations actions suggestionOffset keyAndSnippet indexOfSnippet|
 
     (editView sensor hasKeyPressEventFor:nil) ifTrue:[ 
         self closeCompletionView. 
@@ -77,10 +80,20 @@
     actions := actionsArg.
 
     suggestions := suggestionsArg ? #().
-    suggestions size > 20 ifTrue:[ 
-        suggestions := suggestions copyTo:20.
-        implementations := implementations copyTo:20.
-        actions isArray ifTrue:[ actions := actions copyTo:20 ].
+    numShown := 25.
+    suggestions size > numShown ifTrue:[
+        numFirst := numShown-5.    
+        numLast := 5.
+        numSkipped := suggestions size-numShown.    
+        suggestions := (suggestions copyTo:numShown-5) 
+                        , { ('<< %1 more skipped >>' bindWith:numSkipped) colorizeAllWith:Color grey }  
+                        , (suggestions copyLast:5).
+        implementations isArray ifTrue:[ 
+            implementations := (implementations copyTo:numShown-5),#(nil),(implementations copyLast:5).
+        ].
+        actions isArray ifTrue:[ 
+            actions := (actions copyTo:numShown-5),#(nil),(actions copyLast:5).
+        ].
     ].
 
     "/ append snipplet, if any (can be easily reached via CRSR-up)
@@ -174,9 +187,12 @@
                             LastCompletions size > 200 ifTrue:[
                                 LastCompletions removeLast
                             ].
-
+                            
                             actions notNil ifTrue:[
                                 actions isBlock ifTrue:[
+                                    (numFirst notNil and:[indexInSuggestions > numFirst]) ifTrue:[
+                                        indexInSuggestions := indexInSuggestions + numSkipped - 1.
+                                    ].    
                                     actions value:indexInSuggestions
                                 ] ifFalse:[
                                     (actions at:indexInSuggestions) value
@@ -236,10 +252,10 @@
 !WorkspaceCompletionSupport class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libwidg/WorkspaceCompletionSupport.st,v 1.9 2014-07-08 21:17:07 cg Exp $'
+    ^ '$Header$'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libwidg/WorkspaceCompletionSupport.st,v 1.9 2014-07-08 21:17:07 cg Exp $'
+    ^ '$Header$'
 ! !