20
20
; ;; Code:
21
21
22
22
(require 'dash )
23
- (require 'ht )
24
23
(require 'lsp-mode )
25
24
26
25
(require 'lsp-dart-protocol )
54
53
(goto-char (point-min ))
55
54
(forward-line line)
56
55
(back-to-indentation )
57
- (ht ( " line" line)
58
- ( " character" (current-column ) ))))
56
+ (lsp-make-position : line line
57
+ : character (current-column ))))
59
58
60
59
(defun lsp-dart-flutter-widget-guide--last-col-at (line )
61
60
" Return the last col at LINE."
@@ -79,8 +78,8 @@ Return nil if the widget guilde does not apply."
79
78
(when children-start
80
79
(let ((start-pos (lsp-dart-flutter-widget-guide--first-non-whitespace-pos parent-line)))
81
80
(->> children-start
82
- (--map (ht ( " start" start-pos)
83
- ( " end" (lsp-dart-flutter-widget-guide--first-non-whitespace-pos it) )))
81
+ (--map (lsp-make-range : start start-pos
82
+ : end (lsp-dart-flutter-widget-guide--first-non-whitespace-pos it)))
84
83
(-flatten)))))))
85
84
86
85
(lsp-defun lsp-dart-flutter-widget-guide--outline->guides ((outline &as &FlutterOutline :children ))
@@ -97,14 +96,14 @@ Return nil if the widget guilde does not apply."
97
96
98
97
(defun lsp-dart-flutter-widget-guide--guides->guides-by-line (guides )
99
98
" Convert a widget guide GUIDES to a map by line."
100
- (let ((guides-by-line (ht-create )))
99
+ (let ((guides-by-line '( )))
101
100
(seq-doseq (guide guides)
102
101
(-let (((&Range :start (&Position :line start-line)
103
102
:end (&Position :line end-line)) guide))
104
103
(while (<= start-line end-line)
105
- (if-let ((cur-guides (ht -get guides-by-line start-line)))
106
- (ht-set! guides-by-line start-line (append cur-guides (list guide)))
107
- (ht-set! guides-by-line start-line (list guide)))
104
+ (if-let ((cur-guides (plist -get guides-by-line start-line)))
105
+ (add-to-list ' guides-by-line ( cons start-line (append cur-guides (list guide) )))
106
+ (add-to-list ' guides-by-line ( cons start-line (list guide) )))
108
107
(setq start-line (1+ start-line)))))
109
108
guides-by-line))
110
109
@@ -145,16 +144,16 @@ ANCHOR is the anchor point of the widget guide at LINE."
145
144
(remove-overlays (point-min ) (point-max ) 'category 'lsp-dart-flutter-widget-guide )
146
145
(let* ((guides (lsp-dart-flutter-widget-guide--outline->guides outline))
147
146
(guides-by-line (lsp-dart-flutter-widget-guide--guides->guides-by-line guides)))
148
- (ht-each ( lambda ( line guide-lines )
149
- (let* ((first- guide-char (-min (--map ( min (- > it lsp:range-start lsp:position-character )
150
- (-> it lsp:range-end lsp:position-character)) guide-lines)) )
151
- (last-guide-char (-max (--map ( max (-> it lsp:range-start lsp:position-character)
152
- (-> it lsp:range-end lsp:position-character)) guide-lines)) )
153
- (last-line-char ( lsp-dart-flutter-widget- guide--last-col-at line ))
154
- (anchor ( max 0 ( if ( < last-line-char first-guide-char) 0 first- guide-char) ))
155
- (chars (lsp-dart-flutter-widget-guide--build-chars line guide-lines last -guide-char last-line -char anchor )))
156
- (--each-indexed chars (lsp-dart-flutter-widget-guide--add-overlay-to buffer line ( + it-index anchor) it) )))
157
- guides-by-line )))))
147
+ (seq-doseq (line ( mapcar 'car guides-by-line) )
148
+ (let* ((guide-lines ( alist-get line guides-by-line) )
149
+ (first-guide-char (-min (--map ( min (-> it lsp:range-start lsp:position-character)
150
+ (-> it lsp:range-end lsp:position-character)) guide-lines)) )
151
+ (last-guide-char (-max (--map ( max (-> it lsp:range-start lsp:position-character)
152
+ (- > it lsp:range-end lsp:position-character)) guide-lines) ))
153
+ ( last-line-char (lsp-dart-flutter-widget- guide--last-col-at line ))
154
+ (anchor ( max 0 ( if ( < last- line-char first -guide-char) 0 first-guide -char)))
155
+ ( chars (lsp-dart-flutter-widget-guide--build-chars line guide-lines last-guide-char last-line-char anchor )))
156
+ (--each-indexed chars (lsp-dart-flutter-widget-guide--add-overlay-to buffer line ( + it-index anchor) it))) )))))
158
157
159
158
(provide 'lsp-dart-flutter-widget-guide )
160
159
; ;; lsp-dart-flutter-widget-guide.el ends here
0 commit comments