Some indenter fixes

svn: r9906
This commit is contained in:
Kathy Gray 2008-05-20 16:41:52 +00:00
parent 08d15a9be7
commit bd714552b1
2 changed files with 28 additions and 11 deletions

View File

@ -445,7 +445,7 @@
;; 3.7
("//" (syn-val lexeme 'comment #f start-pos (read-line-comment input-port)))
("/*" (syn-val lexeme 'comment #f start-pos (read-block-comment input-port)))
("/*" (syn-val lexeme 'block-comment #f start-pos (read-block-comment input-port)))
#;("/**" (syn-val lexeme 'comment #f start-pos (read-document-comment input-port)))
;; 3.6

View File

@ -40,6 +40,9 @@
(comment ,(make-object color% 194 116 31) ,(string-constant profj-java-mode-color-comment))
(error ,(make-object color% "red") ,(string-constant profj-java-mode-color-error))
(default ,(make-object color% "black") ,(string-constant profj-java-mode-color-default))))
(define colors-table
(cons `(block-comment ,(make-object color% 194 116 31) ,(string-constant profj-java-mode-color-comment))
color-prefs-table))
;Set the Java coverage colors
(define coverage-color-prefs
@ -139,27 +142,40 @@
(skip-whitespace sexp-start+whitespace 'backward #t))))
(define/private (get-indentation start-pos)
(letrec ([indent
(letrec ([last-offset
(lambda (previous-line last-line-start)
(max (sub1 (if (> last-line-start start-pos)
(- start-pos previous-line)
(- last-line-start previous-line)))
0))]
[indent
(if (or (is-stopped?) (is-frozen?))
0
(let* ([base-offset 0]
[curr-open (get-sexp-start start-pos)])
#;(printf "~a, ~a :~a ~n" start-pos (classify-position start-pos) curr-open)
(cond
[(and (eq? (classify-position start-pos) 'comment)
(eq? (classify-position (add1 start-pos)) 'comment))
base-offset]
[(or (not curr-open) (= curr-open 0)) base-offset]
[else
(let ([previous-line (find-string eol 'backward start-pos 0 #f)])
#;(printf "prev-line ~a~n" previous-line)
(cond
[(not previous-line) (+ base-offset single-tab-stop)]
[(or (eq? (classify-position previous-line) 'comment)
(eq? (classify-position previous-line) 'block-comment))
(let* ([last-line-start (skip-whitespace (add1 previous-line) 'forward #f)]
[last-line-indent (last-offset previous-line last-line-start)]
[old-open (get-sexp-start last-line-start)])
#;(printf "lls ~a lli~a~ oo ~a~n" last-line-start last-line-indent old-open)
(cond
[(not old-open) last-line-indent]
[(and old-open (<= curr-open old-open)) last-line-indent]
[else (+ single-tab-stop last-line-indent)]))]
[else
(let* ([last-line-start (skip-whitespace previous-line 'forward #f)]
[last-line-indent
(sub1 (if (> last-line-start start-pos)
(- start-pos previous-line)
(- last-line-start previous-line)))]
[last-line-indent (last-offset previous-line last-line-start)]
[old-open (get-sexp-start last-line-start)])
#;(printf "lls ~a lli ~a oo~a~n" last-line-start last-line-indent old-open)
(cond
[(not old-open) last-line-indent]
[(and old-open (<= curr-open old-open)) last-line-indent]
@ -178,6 +194,7 @@
(define/public (do-return)
(let ([start-pos (get-start-position)]
[end-pos (get-end-position)])
#;(printf "do-return start-pos ~a end-pos ~a" start-pos end-pos)
(let ([to-insert ""])
(if (= start-pos end-pos)
(insert (string-append "\n" (get-indentation start-pos)))
@ -189,7 +206,7 @@
(begin-edit-sequence)
(let loop ([para start-para])
(let* ([para-start (paragraph-start-position para)]
[insertion (get-indentation (max 0 (sub1 para-start)) #;para-start)]
[insertion (get-indentation (max 0 (sub1 para-start)))]
[closer? #f])
(let loop ()
(let ([c (get-character para-start)])
@ -964,7 +981,7 @@
(color-prefs:register-color-preference (short-sym->pref-name sym)
(short-sym->style-name sym)
color)))
(for-each register color-prefs-table)
(for-each register colors-table)
(for-each register coverage-color-prefs)
;;Java Boxes