2020; ;; Code:
2121
2222(require 'dash )
23- (require 'ht )
2423(require 'lsp-mode )
2524
2625(require 'lsp-dart-protocol )
5453 (goto-char (point-min ))
5554 (forward-line line)
5655 (back-to-indentation )
57- (ht ( " line" line)
58- ( " character" (current-column ) ))))
56+ (lsp-make-position : line line
57+ : character (current-column ))))
5958
6059(defun lsp-dart-flutter-widget-guide--last-col-at (line )
6160 " Return the last col at LINE."
@@ -79,8 +78,8 @@ Return nil if the widget guilde does not apply."
7978 (when children-start
8079 (let ((start-pos (lsp-dart-flutter-widget-guide--first-non-whitespace-pos parent-line)))
8180 (->> 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)))
8483 (-flatten)))))))
8584
8685(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."
9796
9897(defun lsp-dart-flutter-widget-guide--guides->guides-by-line (guides )
9998 " Convert a widget guide GUIDES to a map by line."
100- (let ((guides-by-line (ht-create )))
99+ (let ((guides-by-line '( )))
101100 (seq-doseq (guide guides)
102101 (-let (((&Range :start (&Position :line start-line)
103102 :end (&Position :line end-line)) guide))
104103 (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) )))
108107 (setq start-line (1+ start-line)))))
109108 guides-by-line))
110109
@@ -145,16 +144,16 @@ ANCHOR is the anchor point of the widget guide at LINE."
145144 (remove-overlays (point-min ) (point-max ) 'category 'lsp-dart-flutter-widget-guide )
146145 (let* ((guides (lsp-dart-flutter-widget-guide--outline->guides outline))
147146 (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))) )))))
158157
159158(provide 'lsp-dart-flutter-widget-guide )
160159; ;; lsp-dart-flutter-widget-guide.el ends here
0 commit comments