finished auto completion integration
svn: r7304
This commit is contained in:
parent
6f83062a51
commit
6b6f397a64
|
@ -102,7 +102,7 @@
|
|||
(add-info-specified-languages
|
||||
get-default-language-settings
|
||||
settings-preferences-symbol
|
||||
|
||||
get-all-scheme-manual-keywords
|
||||
add-built-in-languages))
|
||||
|
||||
(define-signature drscheme:tools^
|
||||
|
@ -177,6 +177,7 @@
|
|||
error-delta
|
||||
get-welcome-delta
|
||||
get-dark-green-delta
|
||||
drs-autocomplete-mixin
|
||||
text%
|
||||
text<%>
|
||||
context<%>))
|
||||
|
|
|
@ -1310,15 +1310,39 @@
|
|||
#f))
|
||||
(super-new)))
|
||||
|
||||
(define get-all-scheme-manual-keywords
|
||||
(let ([words #f])
|
||||
(λ ()
|
||||
(unless words
|
||||
(set! words (text:get-completions/manuals
|
||||
(list "gui"
|
||||
"guide"
|
||||
"help"
|
||||
"mzscheme"
|
||||
"mred"
|
||||
"quick"
|
||||
"r5rs"
|
||||
"reference"
|
||||
"scribble"
|
||||
"web-server-guide"
|
||||
"web-server-reference"))))
|
||||
words)))
|
||||
|
||||
;; add-built-in-languages : -> void
|
||||
(define (add-built-in-languages)
|
||||
(let* ([extras-mixin
|
||||
(let* ([words #f]
|
||||
[extras-mixin
|
||||
(λ (mred-launcher? one-line-summary)
|
||||
(λ (%)
|
||||
(class* % (drscheme:language:language<%>)
|
||||
(define/override (get-one-line-summary) one-line-summary)
|
||||
(define/override (use-namespace-require/copy?) #t)
|
||||
(inherit get-module get-transformer-module get-init-code)
|
||||
(define/augment (capability-value key)
|
||||
(cond
|
||||
[(eq? key 'drscheme:autocomplete-words)
|
||||
(get-all-scheme-manual-keywords)]
|
||||
[else (drscheme:language:get-capability-default key)]))
|
||||
(define/override (create-executable setting parent program-filename)
|
||||
(let ([executable-fn
|
||||
(drscheme:language:put-executable
|
||||
|
|
|
@ -287,6 +287,7 @@
|
|||
(install-help-browser-preference-panel)
|
||||
(drscheme:tools:add-prefs-panel)
|
||||
|
||||
(drscheme:language:register-capability 'drscheme:autocomplete-words (listof string?) '())
|
||||
(drscheme:language:register-capability 'drscheme:define-popup
|
||||
(or/c (cons/c string? string?) false/c)
|
||||
(cons "(define" "(define ...)"))
|
||||
|
|
|
@ -49,6 +49,12 @@
|
|||
(define/override (use-namespace-require/copy?) #t)
|
||||
(field [iteration-number 0])
|
||||
|
||||
(define/augment (capability-value key)
|
||||
(cond
|
||||
[(eq? key 'drscheme:autocomplete-words)
|
||||
(drscheme:language-configuration:get-all-scheme-manual-keywords)]
|
||||
[else (drscheme:language:get-capability-default key)]))
|
||||
|
||||
;; config-panel : as in super class
|
||||
;; uses drscheme:language:simple-module-based-language-config-panel
|
||||
;; and adds a collection paths configuration to it.
|
||||
|
|
|
@ -1786,7 +1786,15 @@ TODO
|
|||
(send file get-definitions-text)
|
||||
position)))))
|
||||
|
||||
|
||||
(define drs-autocomplete-mixin
|
||||
(λ (get-defs x)
|
||||
(class (text:autocomplete-mixin x)
|
||||
(define/override (get-all-words)
|
||||
(let* ([definitions-text (get-defs this)]
|
||||
[settings (send definitions-text get-next-settings)]
|
||||
[language (drscheme:language-configuration:language-settings-language settings)])
|
||||
(send language capability-value 'drscheme:autocomplete-words)))
|
||||
(super-new))))
|
||||
|
||||
(define -text%
|
||||
(drs-bindings-keymap-mixin
|
||||
|
@ -1798,5 +1806,7 @@ TODO
|
|||
(editor:info-mixin
|
||||
(text:searching-mixin
|
||||
(mode:host-text-mixin
|
||||
(text:foreground-color-mixin
|
||||
text:clever-file-format%)))))))))))))
|
||||
(drs-autocomplete-mixin
|
||||
(λ (txt) (send txt get-definitions-text))
|
||||
(text:foreground-color-mixin
|
||||
text:clever-file-format%))))))))))))))
|
||||
|
|
|
@ -955,6 +955,8 @@
|
|||
" --- determines if the insert text box menu item in the special menu is visible"
|
||||
"\\item \\scheme|(drscheme:language:register-capability 'drscheme:special:xml-menus (flat-contract boolean?) #t)|"
|
||||
" --- determines if the insert scheme box, insert scheme splice box, and the insert xml box menu item ins the special menu are visible"
|
||||
"\\item \\scheme|(drscheme:language:register-capability 'drscheme:autocomplete-words (listof string?) '()|"
|
||||
" --- determines the list of words that are used when completing words in this language"
|
||||
|
||||
"\\end{itemize}")
|
||||
(drscheme:language:capability-registered?
|
||||
|
|
|
@ -389,7 +389,9 @@ module browser threading seems wrong.
|
|||
(mode:host-text-mixin
|
||||
(text:delegate-mixin
|
||||
(text:foreground-color-mixin
|
||||
text:info%))))))))])
|
||||
(drscheme:rep:drs-autocomplete-mixin
|
||||
(λ (x) x)
|
||||
text:info%)))))))))])
|
||||
(class* definitions-super% (definitions-text<%>)
|
||||
(inherit get-top-level-window)
|
||||
|
||||
|
@ -2717,6 +2719,18 @@ module browser threading seems wrong.
|
|||
|
||||
(define/override (edit-menu:between-find-and-preferences edit-menu)
|
||||
(super edit-menu:between-find-and-preferences edit-menu)
|
||||
(new menu-item%
|
||||
[label (string-constant complete-word)]
|
||||
[shortcut #\/]
|
||||
[parent edit-menu]
|
||||
[demand-callback
|
||||
(λ (mi)
|
||||
(send mi enable
|
||||
(let ([ed (get-edit-target-object)])
|
||||
(and ed
|
||||
(is-a? ed text:autocomplete<%>)))))]
|
||||
[callback (λ (x y)
|
||||
(send (get-edit-target-object) auto-complete))])
|
||||
(add-modes-submenu edit-menu))
|
||||
|
||||
;; capability-menu-items : hash-table[menu -o> (listof (list menu-item number key)))
|
||||
|
|
|
@ -2173,6 +2173,8 @@ designates the character that triggers autocompletion
|
|||
;; ============================================================
|
||||
;; auto-complete-text (mixin) implementation
|
||||
|
||||
(define selected-color (make-object color% 204 153 255))
|
||||
|
||||
(define autocomplete-mixin
|
||||
(mixin ((class->interface text%)) (autocomplete<%>)
|
||||
|
||||
|
@ -2189,7 +2191,7 @@ designates the character that triggers autocompletion
|
|||
|
||||
; get-autocomplete-selected-color : -> string
|
||||
; selected option background color in the autocomplete menu
|
||||
(define/public (get-autocomplete-selected-color) "orange")
|
||||
(define/public (get-autocomplete-selected-color) selected-color)
|
||||
|
||||
(define/public (completion-mode-key-event? key-event)
|
||||
(cond
|
||||
|
|
|
@ -347,8 +347,7 @@
|
|||
;(define/override (get-one-line-summary) one-line-summary)
|
||||
(define/public (get-htdp-style-delta) style-delta)
|
||||
|
||||
(super-instantiate ()
|
||||
(language-url "http://www.htdp.org/"))))
|
||||
(super-new [language-url "http://www.htdp.org/"])))
|
||||
|
||||
(define (language-extension %)
|
||||
(class %
|
||||
|
@ -391,8 +390,10 @@
|
|||
(go "." (drscheme:rep:get-welcome-delta))
|
||||
(newline port)))
|
||||
|
||||
(define/private (htdp-manuals) (list (get-manual) #"teachpack" #"drscheme" #"help"))
|
||||
|
||||
(define/override (order-manuals x)
|
||||
(values (list (get-manual) #"teachpack" #"drscheme" #"help") #f))
|
||||
(values (htdp-manuals) #f))
|
||||
|
||||
(inherit get-module get-transformer-module get-init-code
|
||||
use-namespace-require/copy?)
|
||||
|
@ -561,8 +562,13 @@
|
|||
(cadr x))])
|
||||
(format "the teachpack '~a' was not found" name)))
|
||||
|
||||
(define keywords #f)
|
||||
(define/augment (capability-value key)
|
||||
(case key
|
||||
[(drscheme:autocomplete-words)
|
||||
(unless keywords
|
||||
(set! keywords (text:get-completions/manuals (map bytes->string/utf-8 (htdp-manuals)))))
|
||||
keywords]
|
||||
[(drscheme:teachpack-menu-items) htdp-teachpack-callbacks]
|
||||
[(drscheme:special:insert-lambda) #f]
|
||||
[else (inner (drscheme:language:get-capability-default key)
|
||||
|
|
|
@ -275,7 +275,7 @@
|
|||
(print-style print-full? allow-check? allow-test? run-tests? coverage? classpath) (make-inspector))
|
||||
|
||||
;ProfJ general language mixin
|
||||
(define (java-lang-mixin level name number one-line dyn?)
|
||||
(define (java-lang-mixin level name number one-line dyn? manual-dirname)
|
||||
(when dyn? (dynamic? #t))
|
||||
(class* object% (drscheme:language:language<%>)
|
||||
(define/public (extra-repl-information settings port) (void))
|
||||
|
@ -284,8 +284,17 @@
|
|||
(define/public (metadata->settings m) #f)
|
||||
(define/public (get-metadata-lines) #f)
|
||||
|
||||
(define autocomplete-words #f)
|
||||
|
||||
(define/public (capability-value s)
|
||||
(cond
|
||||
[(eq? s 'drscheme:autocomplete-words)
|
||||
(unless autocomplete-words
|
||||
(set! autocomplete-words
|
||||
(if manual-dirname
|
||||
(text:get-completions/manuals (list manual-dirname))
|
||||
'())))
|
||||
autocomplete-words]
|
||||
[(eq? s 'drscheme:language-menu-title) (string-constant profj-java)]
|
||||
[(memq s '(profj:special:java-comment-box
|
||||
profj:special:java-examples-box
|
||||
|
@ -884,15 +893,19 @@
|
|||
(super-instantiate ())))
|
||||
|
||||
;Create the ProfessorJ languages
|
||||
(define dynamic-lang% (java-lang-mixin 'full (string-constant profj-dynamic-lang) 6 (string-constant profj-dynamic-lang-one-summary) #t))
|
||||
(define full-lang% (java-lang-mixin 'full (string-constant profj-full-lang) 5 (string-constant profj-full-lang-one-line-summary) #f))
|
||||
(define advanced-lang% (java-lang-mixin 'advanced (string-constant profj-advanced-lang) 4 (string-constant profj-advanced-lang-one-line-summary) #f))
|
||||
(define dynamic-lang% (java-lang-mixin 'full (string-constant profj-dynamic-lang) 6 (string-constant profj-dynamic-lang-one-summary) #t #f))
|
||||
(define full-lang% (java-lang-mixin 'full (string-constant profj-full-lang) 5 (string-constant profj-full-lang-one-line-summary) #f #f))
|
||||
(define advanced-lang% (java-lang-mixin 'advanced (string-constant profj-advanced-lang) 4 (string-constant profj-advanced-lang-one-line-summary) #f
|
||||
"profj-advanced"))
|
||||
(define intermediate+access-lang%
|
||||
(java-lang-mixin 'intermediate+access
|
||||
(string-constant profj-intermediate-access-lang) 3 (string-constant profj-intermediate-access-lang-one-line-summary) #f))
|
||||
(string-constant profj-intermediate-access-lang) 3 (string-constant profj-intermediate-access-lang-one-line-summary) #f
|
||||
"profj-intermediate-access"))
|
||||
(define intermediate-lang%
|
||||
(java-lang-mixin 'intermediate (string-constant profj-intermediate-lang) 2 (string-constant profj-intermediate-lang-one-line-summary) #f))
|
||||
(define beginner-lang% (java-lang-mixin 'beginner (string-constant profj-beginner-lang) 1 (string-constant profj-beginner-lang-one-line-summary) #f))
|
||||
(java-lang-mixin 'intermediate (string-constant profj-intermediate-lang) 2 (string-constant profj-intermediate-lang-one-line-summary) #f
|
||||
"profj-intermediate"))
|
||||
(define beginner-lang% (java-lang-mixin 'beginner (string-constant profj-beginner-lang) 1 (string-constant profj-beginner-lang-one-line-summary) #f
|
||||
"profj-beginner"))
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;;
|
||||
|
|
|
@ -640,6 +640,8 @@ please adhere to these guidelines:
|
|||
(replace-and-find-again-info "Replace the current text and search for the same string as before")
|
||||
(replace-and-find-again-menu-item "Replace && Find Again")
|
||||
|
||||
(complete-word "Complete word") ; the complete word menu item in the edit menu
|
||||
|
||||
(preferences-info "Configure your preferences")
|
||||
(preferences-menu-item "Preferences...")
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user