|
752 | 752 | (and snd-end
|
753 | 753 | (let ([snd-start (get-backward-sexp snd-end)])
|
754 | 754 | (and snd-start
|
755 |
| - (equal? (get-text snd-start snd-end) |
756 |
| - "...") |
| 755 | + (text-is-ellipsis? (get-text snd-start snd-end)) |
757 | 756 | (let ([thrd-start (get-forward-sexp snd-end)])
|
758 | 757 | (and (or (not thrd-start)
|
759 | 758 | (not (= (position-paragraph thrd-start)
|
760 | 759 | (position-paragraph snd-start)))))))))))))
|
761 | 760 |
|
| 761 | + (define/private (text-is-ellipsis? text) |
| 762 | + (define pref (preferences:get 'framework:tabify)) |
| 763 | + (define ht (car pref)) |
| 764 | + (define ...-reg (and (> (length pref) 5) (list-ref pref 5))) |
| 765 | + (hash-ref |
| 766 | + ht |
| 767 | + (with-handlers ((exn:fail:read? (λ (x) #f))) |
| 768 | + (read (open-input-string text))) |
| 769 | + (λ () (and ...-reg (regexp-match ...-reg text))))) |
| 770 | + |
762 | 771 | (define/private (first-sexp-is-keyword? contains)
|
763 | 772 | (let ([fst-end (get-forward-sexp contains)])
|
764 | 773 | (and fst-end
|
|
2173 | 2182 | (values (pick-out 'begin all-keywords null)
|
2174 | 2183 | (pick-out 'define all-keywords null)
|
2175 | 2184 | (pick-out 'lambda all-keywords null)
|
2176 |
| - (pick-out 'for/fold all-keywords null)))) |
2177 |
| - (define-values (begin-keywords define-keywords lambda-keywords for/fold-keywords) |
| 2185 | + (pick-out 'for/fold all-keywords null) |
| 2186 | + (pick-out '... all-keywords null)))) |
| 2187 | + (define-values (begin-keywords define-keywords lambda-keywords for/fold-keywords ellipses-keywords) |
2178 | 2188 | (get-keywords (car (preferences:get 'framework:tabify))))
|
2179 | 2189 | (define ((add-button-callback keyword-type keyword-symbol list-box) button command)
|
2180 | 2190 | (define new-one
|
|
2276 | 2286 | 'for/fold
|
2277 | 2287 | for/fold-keywords
|
2278 | 2288 | (λ (x) (update-pref 4 x))))
|
| 2289 | + (define-values (ellipses-list-box ellipses-regexp-text) |
| 2290 | + (make-column "Ellipses" |
| 2291 | + '... |
| 2292 | + ellipses-keywords |
| 2293 | + (λ (x) (update-pref 5 x)))) |
2279 | 2294 | (define (update-list-boxes hash-table)
|
2280 |
| - (define-values (begin-keywords define-keywords lambda-keywords for/fold-keywords) |
| 2295 | + (define-values (begin-keywords define-keywords lambda-keywords for/fold-keywords ellipses-keywords) |
2281 | 2296 | (get-keywords hash-table))
|
2282 | 2297 | (define (reset list-box keywords)
|
2283 | 2298 | (send list-box clear)
|
|
2286 | 2301 | (reset define-list-box define-keywords)
|
2287 | 2302 | (reset lambda-list-box lambda-keywords)
|
2288 | 2303 | (reset for/fold-list-box for/fold-keywords)
|
| 2304 | + (reset ellipses-list-box ellipses-keywords) |
2289 | 2305 | #t)
|
2290 | 2306 | (define update-gui
|
2291 | 2307 | (λ (pref)
|
2292 | 2308 | (update-list-boxes (car pref))
|
2293 | 2309 | (send begin-regexp-text set-value (or (object-name (list-ref pref 1)) ""))
|
2294 | 2310 | (send define-regexp-text set-value (or (object-name (list-ref pref 2)) ""))
|
2295 | 2311 | (send lambda-regexp-text set-value (or (object-name (list-ref pref 3)) ""))
|
2296 |
| - (send for/fold-regexp-text set-value (or (object-name (list-ref pref 4)) "")))) |
| 2312 | + (send for/fold-regexp-text set-value (or (object-name (list-ref pref 4)) "")) |
| 2313 | + (send ellipses-regexp-text set-value (or (and (> (length pref) 5) |
| 2314 | + (object-name (list-ref pref 5))) |
| 2315 | + "")))) |
2297 | 2316 | (preferences:add-callback 'framework:tabify (λ (p v) (update-gui v)))
|
2298 | 2317 | (update-gui (preferences:get 'framework:tabify))
|
2299 | 2318 | main-panel)
|
0 commit comments