add menu item to hide/show line numbers
This commit is contained in:
parent
4b120e5d86
commit
8cba0a0627
|
@ -118,6 +118,7 @@
|
|||
(drr:set-default 'drracket:module-language-first-line-special? #t boolean?)
|
||||
|
||||
(drr:set-default 'drracket:defns-popup-sort-by-name? #f boolean?)
|
||||
(drr:set-default 'drracket:show-line-numbers? #f boolean?)
|
||||
|
||||
(drr:set-default 'drracket:toolbar-state
|
||||
'(#f . top)
|
||||
|
@ -299,14 +300,15 @@
|
|||
(preferences:add-general-checkbox-panel)
|
||||
|
||||
(let ([make-check-box
|
||||
(λ (pref-sym string parent)
|
||||
(λ (pref-sym string parent [extra-functionality #f])
|
||||
(let ([q (make-object check-box%
|
||||
string
|
||||
parent
|
||||
(λ (checkbox evt)
|
||||
(preferences:set
|
||||
pref-sym
|
||||
(send checkbox get-value))))])
|
||||
(define value (send checkbox get-value))
|
||||
(preferences:set pref-sym value)
|
||||
(when extra-functionality
|
||||
(extra-functionality value))))])
|
||||
(preferences:add-callback pref-sym (λ (p v) (send q set-value v)))
|
||||
(send q set-value (preferences:get pref-sym))))])
|
||||
(preferences:add-to-general-checkbox-panel
|
||||
|
@ -325,7 +327,7 @@
|
|||
(make-check-box 'drracket:defs/ints-horizontal
|
||||
(string-constant interactions-beside-definitions)
|
||||
editor-panel)
|
||||
|
||||
|
||||
(make-check-box 'drracket:module-language-first-line-special?
|
||||
(string-constant ml-always-show-#lang-line)
|
||||
editor-panel)))
|
||||
|
|
|
@ -447,16 +447,12 @@ module browser threading seems wrong.
|
|||
(set! definitions-text% (make-definitions-text%)))
|
||||
definitions-text%)))
|
||||
|
||||
;; TODO: get this from the configuation file
|
||||
;; also add a menu entry that sets this property dynamically
|
||||
(define (show-line-numbers?) #f)
|
||||
|
||||
;; links two editor's together so they scroll in tandem
|
||||
(define (linked-scroller %)
|
||||
(class %
|
||||
(super-new)
|
||||
(field [linked #f])
|
||||
(init-field line-numbers?)
|
||||
(init-field [line-numbers? #f])
|
||||
|
||||
(inherit insert line-start-position line-end-position)
|
||||
|
||||
|
@ -491,13 +487,17 @@ module browser threading seems wrong.
|
|||
(inner (void) after-delete start length))
|
||||
|
||||
(define/augment (after-insert start length)
|
||||
(update-numbers)
|
||||
#;
|
||||
(when (not line-numbers?)
|
||||
#;
|
||||
(printf "Send ~a linked ensure-length ~a\n" linked (send this last-line))
|
||||
(when linked
|
||||
(send linked ensure-length (send this last-line))))
|
||||
(inner (void) after-insert start length))
|
||||
|
||||
(define/public (update-numbers)
|
||||
(when (and (not line-numbers?) linked)
|
||||
(send linked ensure-length (send this last-line))))
|
||||
|
||||
(define/public (ensure-length length)
|
||||
(define lines (send this last-line))
|
||||
#;
|
||||
|
@ -1452,6 +1452,12 @@ module browser threading seems wrong.
|
|||
(λ (l) (remq execute-warning-panel l)))
|
||||
(send execute-warning-canvas set-message #f))])))
|
||||
|
||||
(define (show-line-numbers?)
|
||||
(preferences:get 'drracket:show-line-numbers?))
|
||||
|
||||
(define/public (show-line-numbers! show)
|
||||
(re-initialize-definitions-canvas))
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;;
|
||||
;; logging
|
||||
|
@ -2593,7 +2599,9 @@ module browser threading seems wrong.
|
|||
(send resizable-panel begin-container-sequence)
|
||||
|
||||
;; this might change the unit-window-size-percentage, so save/restore it
|
||||
(send resizable-panel change-children (λ (l) (immediate-children resizable-panel new-children)))
|
||||
(send resizable-panel change-children
|
||||
(λ (old)
|
||||
(immediate-children resizable-panel new-children)))
|
||||
|
||||
(preferences:set 'drracket:unit-window-size-percentage p)
|
||||
;; restore preferred interactions/definitions sizes
|
||||
|
@ -2770,28 +2778,38 @@ module browser threading seems wrong.
|
|||
|
||||
(define (create-definitions-canvas line-numbers?)
|
||||
(define (with-line-numbers)
|
||||
(define line-numbers-text (new (linked-scroller (uneditable scheme:text%))
|
||||
[line-numbers? #t]))
|
||||
(define shared-pane (new horizontal-pane% [parent resizable-panel]))
|
||||
(define line-canvas (new editor-canvas%
|
||||
[parent shared-pane]
|
||||
[style '(hide-vscroll hide-hscroll)]
|
||||
[editor line-numbers-text]
|
||||
[stretchable-width #f]
|
||||
[min-width 60]))
|
||||
(send definitions-text link-to! line-numbers-text)
|
||||
(send line-numbers-text link-to! definitions-text)
|
||||
(new (drracket:get/extend:get-definitions-canvas)
|
||||
[parent shared-pane]
|
||||
[editor definitions-text]))
|
||||
(define line-numbers-text (new (linked-scroller (uneditable scheme:text%))
|
||||
[line-numbers? #t]))
|
||||
(define shared-pane (new horizontal-panel% [parent resizable-panel]))
|
||||
(define line-canvas (new editor-canvas%
|
||||
[parent shared-pane]
|
||||
[style '(hide-vscroll hide-hscroll)]
|
||||
[editor line-numbers-text]
|
||||
[stretchable-width #f]
|
||||
[min-width 60]))
|
||||
(send definitions-text link-to! line-numbers-text)
|
||||
(send line-numbers-text link-to! definitions-text)
|
||||
(new (drracket:get/extend:get-definitions-canvas)
|
||||
[parent shared-pane]
|
||||
[editor definitions-text]))
|
||||
(define (without-line-numbers)
|
||||
(new (drracket:get/extend:get-definitions-canvas)
|
||||
[parent resizable-panel]
|
||||
[editor definitions-text]))
|
||||
(send definitions-text link-to! #f)
|
||||
(new (drracket:get/extend:get-definitions-canvas)
|
||||
[parent resizable-panel]
|
||||
[editor definitions-text]))
|
||||
(if line-numbers?
|
||||
(with-line-numbers)
|
||||
(without-line-numbers)))
|
||||
|
||||
(define/private (re-initialize-definitions-canvas)
|
||||
(begin-container-sequence)
|
||||
(set! definitions-canvas (create-definitions-canvas
|
||||
(show-line-numbers?)))
|
||||
(set! definitions-canvases (list definitions-canvas))
|
||||
(update-shown)
|
||||
(send (send definitions-canvas get-editor) update-numbers)
|
||||
(end-container-sequence))
|
||||
|
||||
(define/private (initialize-definitions-canvas)
|
||||
(unless definitions-canvas
|
||||
(set! definitions-canvas (create-definitions-canvas
|
||||
|
@ -2831,7 +2849,7 @@ module browser threading seems wrong.
|
|||
;; creates a new tab and updates the GUI for that new tab
|
||||
(define/private create-new-tab
|
||||
(lambda ([filename #f])
|
||||
(let* ([defs (new (drracket:get/extend:get-definitions-text) [line-numbers? #f])]
|
||||
(let* ([defs (new (drracket:get/extend:get-definitions-text))]
|
||||
[tab-count (length tabs)]
|
||||
[new-tab (new (drracket:get/extend:get-tab)
|
||||
(defs defs)
|
||||
|
@ -3897,6 +3915,14 @@ module browser threading seems wrong.
|
|||
#f
|
||||
has-editor-on-demand)
|
||||
(register-capability-menu-item 'drscheme:special:insert-lambda insert-menu))
|
||||
|
||||
(new menu:can-restore-menu-item%
|
||||
[label (string-constant show-line-numbers)]
|
||||
[parent (get-show-menu)]
|
||||
[callback (lambda (x y)
|
||||
(define value (preferences:get 'drracket:show-line-numbers?))
|
||||
(preferences:set 'drracket:show-line-numbers? (not value))
|
||||
(show-line-numbers! (not value)))])
|
||||
|
||||
(make-object separator-menu-item% (get-show-menu))
|
||||
|
||||
|
@ -3933,8 +3959,7 @@ module browser threading seems wrong.
|
|||
;
|
||||
;
|
||||
|
||||
(define definitions-text (new (drracket:get/extend:get-definitions-text)
|
||||
[line-numbers? #f]))
|
||||
(define definitions-text (new (drracket:get/extend:get-definitions-text)))
|
||||
|
||||
;; tabs : (listof tab)
|
||||
(define tabs (list (new (drracket:get/extend:get-tab)
|
||||
|
|
|
@ -446,8 +446,9 @@ please adhere to these guidelines:
|
|||
(online-coloring-active "Color syntax interactively")
|
||||
(open-files-in-tabs "Open files in separate tabs (not separate windows)")
|
||||
(show-interactions-on-execute "Automatically open interactions window when running a program")
|
||||
(switch-to-module-language-automatically "Automatically switch to the module language when opening a module")
|
||||
(interactions-beside-definitions "Put the interactions window beside the definitions window") ;; in preferences, below the checkbox one line above this one
|
||||
(switch-to-module-language-automatically "Automatically switch to the module language when opening a module")
|
||||
(interactions-beside-definitions "Put the interactions window beside the definitions window") ;; in preferences, below the checkbox one line above this one
|
||||
(show-line-numbers "Show line numbers next to the definitions window")
|
||||
(limit-interactions-size "Limit interactions size")
|
||||
(background-color "Background Color")
|
||||
(default-text-color "Default text") ;; used for configuring colors, but doesn't need the word "color"
|
||||
|
|
Loading…
Reference in New Issue
Block a user