From 5d8c34a4cabf74ebd71ace0dff5540366d65be9f Mon Sep 17 00:00:00 2001 From: Jon Rafkind Date: Thu, 4 Nov 2010 10:57:32 -0600 Subject: [PATCH] right align numbers original commit: 9742f896f9916373f00448b3bc72f5ea86f654da --- collects/framework/private/text.rkt | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/collects/framework/private/text.rkt b/collects/framework/private/text.rkt index 6392dbee..d0529eea 100644 --- a/collects/framework/private/text.rkt +++ b/collects/framework/private/text.rkt @@ -3722,6 +3722,9 @@ designates the character that triggers autocompletion (init-field [line-numbers-color "black"]) (init-field [show-line-numbers? #t]) + ;; whether the numbers are aligned on the left or right + ;; only two values should be 'left or 'right + (init-field [alignment 'right]) (define (number-space) (number->string (max (* 10 (last-line)) 100))) @@ -3762,10 +3765,21 @@ designates the character that triggers autocompletion (define (draw-numbers dc top bottom dy start-line end-line) (define (draw-text . args) (send/apply dc draw-text args)) + + (define right-space (text-width dc (number-space))) + (define single-space (text-width dc "0")) + (for ([line (in-range start-line end-line)]) (define y (line-location line)) (when (between top y bottom) - (draw-text (number->string (add1 (line-paragraph line))) 0 (+ dy y))))) + (define view (number->string (add1 (line-paragraph line)))) + (define final-x + (case alignment + [(left) 0] + [(right) (- right-space (text-width dc view) single-space)] + [else 0])) + (define final-y (+ dy y)) + (draw-text view final-x final-y)))) ;; draw the line between the line numbers and the actual text (define (draw-separator dc top bottom dy x)