diff --git a/collects/framework/framework.ss b/collects/framework/framework.ss index b24ebf33ec..b09b664952 100644 --- a/collects/framework/framework.ss +++ b/collects/framework/framework.ss @@ -68,7 +68,7 @@ (parameter/c string?) () "A string that is inserted after a completions is inserted by a" - "@ilink text:autocomplete<%>" + "@ilink text:autocomplete" "instance." "" "Defaults to \"\"") @@ -77,7 +77,7 @@ () "Controls the number of completions visible at a time in the menu" "produced by" - "@ilink text:autocomplete<%>" + "@ilink text:autocomplete" "instances." "" "Defaults to 15.") diff --git a/collects/framework/private/text.ss b/collects/framework/private/text.ss index 181816b035..57142e8022 100644 --- a/collects/framework/private/text.ss +++ b/collects/framework/private/text.ss @@ -2163,6 +2163,7 @@ designates the character that triggers autocompletion (define autocomplete<%> (interface ((class->interface text%)) + auto-complete get-autocomplete-border-color get-autocomplete-background-color get-autocomplete-selected-color @@ -2191,8 +2192,13 @@ designates the character that triggers autocompletion (define/public (get-autocomplete-selected-color) "orange") (define/public (completion-mode-key-event? key-event) - (and (eq? (send key-event get-key-code) #\.) - (send key-event get-control-down))) + (cond + [(and (eq? (send key-event get-key-code) #\.) + (send key-event get-control-down)) + (or (eq? (system-type) 'macosx) + (not (preferences:get 'framework:menu-bindings)))] + [else + #f])) (define/public (get-all-words) (get-completions/manuals @@ -2220,15 +2226,16 @@ designates the character that triggers autocompletion ;; (-> void) ;; Check for possible completions of the current word and give the user a menu for them. - (define/private (auto-complete) - (let* ([end-pos (get-end-position)] - [word (get-word-at end-pos)] - [completion-cursor (get-completions word)]) - (when (not (send completion-cursor empty?)) - (let ([start-pos (- end-pos (string-length word))]) - (set! word-start-pos start-pos) - (set! word-end-pos end-pos) - (show-options word start-pos end-pos completion-cursor))))) + (define/public-final (auto-complete) + (when (equal? (get-start-position) (get-end-position)) + (let* ([end-pos (get-end-position)] + [word (get-word-at end-pos)] + [completion-cursor (get-completions word)]) + (when (not (send completion-cursor empty?)) + (let ([start-pos (- end-pos (string-length word))]) + (set! word-start-pos start-pos) + (set! word-end-pos end-pos) + (show-options word start-pos end-pos completion-cursor)))))) ;; Number -> String ;; The word that ends at the current positon of the editor @@ -2279,8 +2286,7 @@ designates the character that triggers autocompletion [else (destroy-completions-box) (super on-char key-event)]))] - [(and (completion-mode-key-event? key-event) - (equal? (get-start-position) (get-end-position))) + [(completion-mode-key-event? key-event) (auto-complete)] [else (super on-char key-event)]))