original commit: e9db8c3da1d993f0393215d7cd8aa784abf34f94
This commit is contained in:
Robby Findler 1999-02-07 04:15:41 +00:00
parent 36d892a66f
commit e256c05fdf
7 changed files with 75 additions and 69 deletions

View File

@ -162,7 +162,7 @@
(apply super-init args) (apply super-init args)
(auto-wrap (default-auto-wrap?))))) (auto-wrap (default-auto-wrap?)))))
(define -keymap<%> (interface (basic<%>))) (define -keymap<%> (interface (basic<%>) get-keymaps))
(define keymap-mixin (define keymap-mixin
(mixin (basic<%>) (-keymap<%>) args (mixin (basic<%>) (-keymap<%>) args
(public (public
@ -179,18 +179,20 @@
(add-text-keymap-functions keymap) (add-text-keymap-functions keymap)
(add-pasteboard-keymap-functions keymap) (add-pasteboard-keymap-functions keymap)
(for-each (lambda (k) (for-each (lambda (k)
(keymap:set-keymap-error-handler k)
(keymap:set-keymap-implied-shifts k)
(send keymap chain-to-keymap k #f)) (send keymap chain-to-keymap k #f))
(get-keymaps)))))) (get-keymaps))))))
(define file<%> (interface (basic<%>))) (define file<%> (interface (-keymap<%>)))
(define file-mixin ;; wx - should come from -keymap<%> (define file-mixin
(mixin (basic<%>) (file<%>) args (mixin (-keymap<%>) (file<%>) args
(inherit get-keymap (inherit get-filename lock get-style-list
get-filename lock get-style-list
is-modified? change-style set-modified is-modified? change-style set-modified
get-top-level-window) get-top-level-window)
(rename [super-after-save-file after-save-file] (rename [super-after-save-file after-save-file]
[super-after-load-file after-load-file]) [super-after-load-file after-load-file]
[super-get-keymaps get-keymaps])
(override [editing-this-file? (lambda () #t)]) (override [editing-this-file? (lambda () #t)])
(private (private
@ -215,11 +217,12 @@
(lambda (sucessful?) (lambda (sucessful?)
(when sucessful? (when sucessful?
(check-lock)) (check-lock))
(super-after-load-file sucessful?))]) (super-after-load-file sucessful?))]
[get-keymaps
(lambda ()
(cons (keymap:get-file) (super-get-keymaps)))])
(sequence (sequence
(apply super-init args) (apply super-init args))))
(let ([keymap (get-keymap)])
(send keymap chain-to-keymap (keymap:get-file) #f)))))
(define backup-autosave<%> (define backup-autosave<%>
(interface (basic<%>) (interface (basic<%>)

View File

@ -88,11 +88,13 @@
(define-signature framework:editor^ (define-signature framework:editor^
(basic<%> (basic<%>
keymap<%>
info<%> info<%>
file<%> file<%>
backup-autosave<%> backup-autosave<%>
basic-mixin basic-mixin
keymap-mixin
info-mixin info-mixin
file-mixin file-mixin
backup-autosave-mixin)) backup-autosave-mixin))

View File

@ -9,10 +9,6 @@
(rename [-get-file get-file]) (rename [-get-file get-file])
; This is a list of keys that are typed with the SHIFT key, but
; are not normally thought of as shifted. It will have to be
; changed for different keyboards.
(define keyerr (define keyerr
(lambda (str) (lambda (str)
(display str (current-error-port)) (display str (current-error-port))

View File

@ -35,11 +35,8 @@
'(cond '(cond
begin begin0 delay begin begin0 delay
unit compound-unit compound-unit/sig unit compound-unit compound-unit/sig
public private public private override
inherit inherit-from inherit sequence))
rename rename-from
share share-from
sequence))
(for-each (lambda (x) (hash-table-put! hash-table x 'lambda)) (for-each (lambda (x) (hash-table-put! hash-table x 'lambda))
'(lambda let let* letrec recur '(lambda let let* letrec recur
let/cc let/ec letcc catch let/cc let/ec letcc catch

View File

@ -2,7 +2,7 @@
(import mred-interfaces^ (import mred-interfaces^
[editor : framework:editor^]) [editor : framework:editor^])
(define basic% (editor:basic-mixin pasteboard%)) (define basic% (editor:keymap-mixin (editor:basic-mixin pasteboard%)))
(define file% (editor:file-mixin basic%)) (define file% (editor:file-mixin basic%))
(define backup-autosave% (editor:backup-autosave-mixin file%)) (define backup-autosave% (editor:backup-autosave-mixin file%))
(define info% (editor:info-mixin backup-autosave%))) (define info% (editor:info-mixin backup-autosave%)))

View File

@ -184,20 +184,23 @@
(lambda (pos) (lambda (pos)
(let loop ([pos pos]) (let loop ([pos pos])
(let ([paren-pos (let ([paren-pos
(apply max (map (lambda (pair) (let loop ([pairs (scheme-paren:get-paren-pairs)]
(find-string [curr-max #f])
(car pair) (cond
'backward [(null? pairs) curr-max]
pos [else (let* ([pair (car pairs)]
'eof [fnd (find-string (car pair) 'backward pos 'eof #f)])
#f)) (if (and fnd curr-max)
(scheme-paren:get-paren-pairs)))]) (loop (cdr pairs)
(max fnd curr-max))
(loop (cdr pairs)
(or fnd curr-max))))]))])
(cond (cond
[(= -1 paren-pos) #f] [(not paren-pos) #f]
[else [else
(let ([semi-pos (find-string ";" 'backward paren-pos)]) (let ([semi-pos (find-string ";" 'backward paren-pos)])
(cond (cond
[(or (= -1 semi-pos) [(or (not semi-pos)
(< semi-pos (paragraph-start-position (< semi-pos (paragraph-start-position
(position-paragraph paren-pos)))) (position-paragraph paren-pos))))
paren-pos] paren-pos]
@ -282,9 +285,8 @@
[balance-quotes [balance-quotes
(lambda (key) (lambda (key)
(let* ([code (send key get-key-code)] ;; must be a character because of the mapping setup (let* ([char (send key get-key-code)]) ;; must be a character because of the mapping setup
;; this function is only bound to ascii-returning keys ;; this function is only bound to ascii-returning keys
[char (integer->char code)])
(insert char) (insert char)
(let* ([start-pos (get-start-position)] (let* ([start-pos (get-start-position)]
[limit (get-limit start-pos)] [limit (get-limit start-pos)]
@ -376,15 +378,16 @@
[visual-offset [visual-offset
(lambda (pos) (lambda (pos)
(let loop ([p (sub1 pos)]) (let loop ([p (sub1 pos)])
(let ([c (get-character p)]) (if (= p -1)
(cond 0
[(= p -1) 0] (let ([c (get-character p)])
[(char=? c #\null) 0] (cond
[(char=? c #\tab) [(char=? c #\null) 0]
(let ([o (loop (sub1 p))]) [(char=? c #\tab)
(+ o (- 8 (modulo o 8))))] (let ([o (loop (sub1 p))])
[(char=? c #\newline) 0] (+ o (- 8 (modulo o 8))))]
[else (add1 (loop (sub1 p)))]))))] [(char=? c #\newline) 0]
[else (add1 (loop (sub1 p)))])))))]
[do-indent [do-indent
(lambda (amt) (lambda (amt)
(let* ([pos-start end] (let* ([pos-start end]
@ -446,7 +449,7 @@
#f)) #f))
=> (lambda (x) (set-position x))] => (lambda (x) (set-position x))]
[(= para 0) (do-indent 0)] [(= para 0) (do-indent 0)]
[(or (not contains) (= contains -1)) [(not contains)
(do-indent 0)] (do-indent 0)]
[(not last) ;; search backwards for the opening parenthesis, and use it to align this line [(not last) ;; search backwards for the opening parenthesis, and use it to align this line
(let ([enclosing (find-enclosing-paren pos)]) (let ([enclosing (find-enclosing-paren pos)])
@ -487,7 +490,7 @@
(loop (add1 para)))) (loop (add1 para))))
(when (and (>= (position-paragraph start-pos) end-para) (when (and (>= (position-paragraph start-pos) end-para)
(<= (paren:skip-whitespace (<= (paren:skip-whitespace
this (get-start-position) -1) this (get-start-position) 'backward)
(paragraph-start-position first-para))) (paragraph-start-position first-para)))
(set-position (set-position
(let loop ([new-pos (get-start-position)]) (let loop ([new-pos (get-start-position)])
@ -544,7 +547,7 @@
(paren:skip-whitespace (paren:skip-whitespace
this this
(paragraph-start-position curr-para) (paragraph-start-position curr-para)
1)]) 'forward)])
(delete first-on-para (delete first-on-para
(+ first-on-para (+ first-on-para
(let char-loop ([n 0]) (let char-loop ([n 0])
@ -666,7 +669,7 @@
#t))] #t))]
[remove-parens-forward [remove-parens-forward
(lambda (start-pos) (lambda (start-pos)
(let* ([pos (paren:skip-whitespace this start-pos 1)] (let* ([pos (paren:skip-whitespace this start-pos 'forward)]
[first-char (get-character pos)] [first-char (get-character pos)]
[paren? (or (char=? first-char #\( ) [paren? (or (char=? first-char #\( )
(char=? first-char #\[ ))] (char=? first-char #\[ ))]
@ -741,11 +744,11 @@
(set-tabs null tab-size #f) (set-tabs null tab-size #f)
(set-style-list style-list) (set-style-list style-list)
(set-styles-fixed #t) (set-styles-fixed #t)
(let ([keymap (or (get-keymap) (let ([k (or (get-keymap)
(let ([k (make-object keymap%)]) (let ([k (make-object keymap%)])
(set-keymap k) (set-keymap k)
k))]) k))])
(send keymap chain-to-keymap keymap #t))))) (send k chain-to-keymap keymap #t)))))
(define -text% (text-mixin text:info%)) (define -text% (text-mixin text:info%))

View File

@ -13,7 +13,7 @@
;; unless matthew makes it primitive ;; unless matthew makes it primitive
(define basic<%> (define basic<%>
(interface (editor:basic<%> text<%>) (interface (editor:keymap<%> text<%>)
highlight-range highlight-range
get-styles-fixed get-styles-fixed
set-styles-fixed set-styles-fixed
@ -21,10 +21,10 @@
initial-autowrap-bitmap)) initial-autowrap-bitmap))
(define basic-mixin (define basic-mixin
(mixin (editor:basic<%> text<%>) (basic<%>) args (mixin (editor:keymap<%> text<%>) (basic<%>) args
(inherit get-canvases get-admin split-snip get-snip-position (inherit get-canvases get-admin split-snip get-snip-position
delete find-snip invalidate-bitmap-cache delete find-snip invalidate-bitmap-cache
set-autowrap-bitmap get-keymap set-autowrap-bitmap
set-file-format get-file-format set-file-format get-file-format
get-style-list is-modified? change-style set-modified get-style-list is-modified? change-style set-modified
position-location get-extent) position-location get-extent)
@ -296,22 +296,24 @@
(public (public
[initial-autowrap-bitmap (lambda () #f)]) [initial-autowrap-bitmap (lambda () #f)])
(rename [super-get-keymaps get-keymaps])
(override
[get-keymaps
(lambda ()
(cons (keymap:get-global) (super-get-keymaps)))])
(sequence (sequence
(apply super-init args) (apply super-init args)
(set-autowrap-bitmap (initial-autowrap-bitmap)) (set-autowrap-bitmap (initial-autowrap-bitmap)))))
(let ([keymap (get-keymap)])
(keymap:set-keymap-error-handler keymap)
(keymap:set-keymap-implied-shifts keymap)
(send keymap chain-to-keymap (keymap:get-global) #f)))))
(define searching<%> (define searching<%>
(interface () (interface ()
find-string-embedded)) find-string-embedded))
(define searching-mixin (define searching-mixin
(mixin (editor:basic<%> text<%>) (searching<%>) args (mixin (basic<%>) (searching<%>) args
(inherit get-end-position get-start-position last-position (inherit get-end-position get-start-position last-position
find-string get-snip-position get-admin find-snip find-string get-snip-position get-admin find-snip)
get-keymap)
(public (public
[find-string-embedded [find-string-embedded
(opt-lambda (str [direction 1] [start -1] (opt-lambda (str [direction 1] [start -1]
@ -390,12 +392,15 @@
(next-loop) (next-loop)
(values embedded embedded-pos)))] (values embedded embedded-pos)))]
[else (next-loop)]))))))]) [else (next-loop)]))))))])
(rename [super-get-keymaps get-keymaps])
(override
[get-keymaps
(lambda ()
(cons (keymap:get-search) (super-get-keymaps)))])
(sequence (sequence
(apply super-init args) (apply super-init args))))
(let ([keymap (get-keymap)])
(keymap:set-keymap-error-handler keymap)
(keymap:set-keymap-implied-shifts keymap)
(send keymap chain-to-keymap (keymap:get-search) #f)))))
(define return<%> (interface (text<%>))) (define return<%> (interface (text<%>)))
@ -516,7 +521,7 @@
#f))))]) #f))))])
(sequence (apply super-init args)))) (sequence (apply super-init args))))
(define basic% (basic-mixin (editor:basic-mixin text%))) (define basic% (basic-mixin (editor:keymap-mixin (editor:basic-mixin text%))))
(define return% (return-mixin basic%)) (define return% (return-mixin basic%))
(define file% (editor:file-mixin basic%)) (define file% (editor:file-mixin basic%))
(define clever-file-format% (clever-file-format-mixin file%)) (define clever-file-format% (clever-file-format-mixin file%))