..
original commit: 4079dc8a87a4b3754da97f60457162c0c04ad005
This commit is contained in:
parent
40fb70fbe5
commit
7b40de8849
|
@ -732,6 +732,12 @@
|
|||
(filename start end)
|
||||
"Sets the selection of the recently opened file to"
|
||||
"\\var{start} and \\var{end}.")
|
||||
|
||||
(handler:size-recently-opened-files
|
||||
(number? . -> . void?)
|
||||
(num)
|
||||
"Sizes the 'framework:recently-opened-files/pos preference"
|
||||
"list length to \\var{num}.")
|
||||
|
||||
(icon:get-paren-highlight-bitmap
|
||||
(-> (is-a?/c bitmap%))
|
||||
|
|
|
@ -897,6 +897,7 @@
|
|||
[canceled? (cancel-due-to-unsaved-changes editor)])
|
||||
(unless canceled?
|
||||
(send editor begin-edit-sequence)
|
||||
(send editor lock #f)
|
||||
(send editor set-filename #f)
|
||||
(send editor erase)
|
||||
(send editor set-modified #f)
|
||||
|
@ -965,7 +966,10 @@
|
|||
filename
|
||||
(send editor get-start-position)
|
||||
(send editor get-end-position))))))
|
||||
(send editor begin-edit-sequence)
|
||||
(send editor lock #f)
|
||||
(send editor load-file filename)
|
||||
(send editor end-edit-sequence)
|
||||
(void))))
|
||||
|
||||
(inherit get-label)
|
||||
|
|
|
@ -144,8 +144,6 @@
|
|||
|
||||
;; type recent-list-item = (list/p string? number? number?)
|
||||
|
||||
(define recent-max-count 50)
|
||||
|
||||
;; add-to-recent : string -> void
|
||||
(define (add-to-recent filename)
|
||||
(let* ([old-list (preferences:get 'framework:recently-opened-files/pos)]
|
||||
|
@ -157,7 +155,7 @@
|
|||
(if old-ent (cadr old-ent) 0)
|
||||
(if old-ent (caddr old-ent) 0))]
|
||||
[added-in (cons new-ent (remove new-ent old-list compare-recent-list-items))]
|
||||
[new-recent (size-down added-in)])
|
||||
[new-recent (size-down added-in (preferences:get 'framework:recent-max-count))])
|
||||
(preferences:set 'framework:recently-opened-files/pos new-recent)))
|
||||
|
||||
;; compare-recent-list-items : recent-list-item recent-list-item -> boolean
|
||||
|
@ -167,8 +165,8 @@
|
|||
;; size-down : (listof X) -> (listof X)[< recent-max-count]
|
||||
;; takes a list of stuff and returns the
|
||||
;; front of the list, up to `recent-max-count' items
|
||||
(define (size-down new-recent)
|
||||
(let loop ([n recent-max-count]
|
||||
(define (size-down new-recent n)
|
||||
(let loop ([n n]
|
||||
[new-recent new-recent])
|
||||
(cond
|
||||
[(zero? n) null]
|
||||
|
@ -178,6 +176,15 @@
|
|||
(loop (- n 1)
|
||||
(cdr new-recent)))])))
|
||||
|
||||
;; size-recently-opened-files : number -> void
|
||||
;; sets the recently-opened-files/pos preference
|
||||
;; to a size limited by `n'
|
||||
(define (size-recently-opened-files n)
|
||||
(preferences:set
|
||||
'framework:recently-opened-files/pos
|
||||
(size-down (preferences:get 'framework:recently-opened-files/pos)
|
||||
n)))
|
||||
|
||||
;; set-recent-position : string number number -> void
|
||||
;; updates the recent menu preferences
|
||||
;; with the positions `start' and `end'
|
||||
|
|
|
@ -14,9 +14,20 @@
|
|||
(import mred^
|
||||
[preferences : framework:preferences^]
|
||||
[exit : framework:exit^]
|
||||
[group : framework:group^])
|
||||
[group : framework:group^]
|
||||
[handler : framework:handler^])
|
||||
|
||||
;; preferences
|
||||
(preferences:set-default 'framework:recent-max-count
|
||||
50
|
||||
(lambda (x) (and (number? x)
|
||||
(x . > . 0)
|
||||
(integer? x))))
|
||||
(preferences:add-callback
|
||||
'framework:recent-max-count
|
||||
(lambda (p v)
|
||||
(handler:size-recently-opened-files v)))
|
||||
|
||||
(preferences:set-default 'framework:last-url-string "" string?)
|
||||
(preferences:set-default 'framework:recently-opened-sort-by 'age
|
||||
(lambda (x) (or (eq? x 'age) (eq? x 'name))))
|
||||
|
|
|
@ -374,6 +374,21 @@
|
|||
(lambda (p v)
|
||||
(send c set-value (pref->bool v))))))
|
||||
|
||||
(define (make-recent-items-slider parent)
|
||||
(let ([slider (instantiate slider% ()
|
||||
(parent parent)
|
||||
(label (string-constant number-of-open-recent-items))
|
||||
(min-value 1)
|
||||
(max-value 100)
|
||||
(init-value (get 'framework:recent-max-count))
|
||||
(callback (lambda (slider y)
|
||||
(set 'framework:recent-max-count
|
||||
(send slider get-value)))))])
|
||||
(add-callback
|
||||
'framework:recent-max-count
|
||||
(lambda (p v)
|
||||
(send slider set-value v)))))
|
||||
|
||||
(define (add-scheme-checkbox-panel)
|
||||
(letrec ([add-scheme-checkbox-panel
|
||||
(lambda ()
|
||||
|
@ -403,6 +418,7 @@
|
|||
(add-checkbox-panel
|
||||
(string-constant editor-prefs-panel-label)
|
||||
(lambda (editor-panel)
|
||||
(make-recent-items-slider editor-panel)
|
||||
(make-check editor-panel
|
||||
'framework:autosaving-on?
|
||||
(string-constant auto-save-files)
|
||||
|
|
|
@ -384,7 +384,8 @@
|
|||
install-recent-items
|
||||
add-to-recent
|
||||
set-recent-position
|
||||
set-recent-items-frame-superclass))
|
||||
set-recent-items-frame-superclass
|
||||
size-recently-opened-files))
|
||||
(define-signature framework:handler^
|
||||
((open framework:handler-class^)
|
||||
(open framework:handler-fun^)))
|
||||
|
|
Loading…
Reference in New Issue
Block a user