5050
5151(defun lsp-dart-flutter-widget-guide--first-non-whitespace-pos (line )
5252 " Return the first non whitepaces position at LINE."
53- (save-excursion
54- (goto-char (point-min ))
55- (forward-line line)
56- (back-to-indentation )
57- (lsp-make-position :line line
58- :character (current-column ))))
53+ (goto-char (point-min ))
54+ (forward-line line)
55+ (back-to-indentation )
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."
62- (save-excursion
63- (goto-char (point-min ))
64- (forward-line line)
65- (end-of-line )
66- (current-column )))
61+ (goto-char (point-min ))
62+ (forward-line line)
63+ (end-of-line )
64+ (current-column ))
6765
6866(lsp-defun lsp-dart-flutter-widget-guide--outline->guide ((&FlutterOutline :kind :children :range
6967 (&Range :start
@@ -112,7 +110,8 @@ Return nil if the widget guilde does not apply."
112110SIZE is the length of the characters list.
113111LAST-LINE-CHAR is the last column position of LINE.
114112ANCHOR is the anchor point of the widget guide at LINE."
115- (let ((chars (make-list size lsp-dart-flutter-widget-guide-space)))
113+ (let ((chars (make-list size lsp-dart-flutter-widget-guide-space))
114+ (max-lisp-eval-depth 1800 ))
116115 (seq-doseq (guide guide-lines)
117116 (-let* (((&Range :start (&Position :character start-char)
118117 :end (&Position :line end-line :character end-char)) guide)
@@ -141,22 +140,23 @@ ANCHOR is the anchor point of the widget guide at LINE."
141140
142141(lsp-defun lsp-dart-flutter-widget-guide-check ((&FlutterOutlineNotification :uri :outline ))
143142 " Check if there is any widget guide on buffer from uri of OUTLINE-PARAMS."
144- (- when-let (buffer (find-buffer-visiting (lsp--uri-to-path uri)))
143+ (when-let (buffer (find-buffer-visiting (lsp--uri-to-path uri)))
145144 (with-current-buffer buffer
146145 (remove-overlays (point-min ) (point-max ) 'category 'lsp-dart-flutter-widget-guide )
147- (let* ((guides (lsp-dart-flutter-widget-guide--outline->guides outline))
148- (guides-by-line (lsp-dart-flutter-widget-guide--guides->guides-by-line guides)))
149- (lsp-dart-plist-each
150- (lambda (line guide-lines )
151- (let* ((first-guide-char (-min (--map (min (-> it lsp:range-start lsp:position-character)
152- (-> it lsp:range-end lsp:position-character)) guide-lines)))
153- (last-guide-char (-max (--map (max (-> it lsp:range-start lsp:position-character)
154- (-> it lsp:range-end lsp:position-character)) guide-lines)))
155- (last-line-char (lsp-dart-flutter-widget-guide--last-col-at line))
156- (anchor (max 0 (if (< last-line-char first-guide-char) 0 first-guide-char)))
157- (chars (lsp-dart-flutter-widget-guide--build-chars line guide-lines last-guide-char last-line-char anchor)))
158- (--each-indexed chars (lsp-dart-flutter-widget-guide--add-overlay-to buffer line (+ it-index anchor) it))))
159- guides-by-line)))))
146+ (save-excursion
147+ (->> outline
148+ (lsp-dart-flutter-widget-guide--outline->guides)
149+ (lsp-dart-flutter-widget-guide--guides->guides-by-line)
150+ (lsp-dart-plist-each
151+ (lambda (line guide-lines )
152+ (let* ((first-guide-char (-min (--map (min (-> it lsp:range-start lsp:position-character)
153+ (-> it lsp:range-end lsp:position-character)) guide-lines)))
154+ (last-guide-char (-max (--map (max (-> it lsp:range-start lsp:position-character)
155+ (-> it lsp:range-end lsp:position-character)) guide-lines)))
156+ (last-line-char (lsp-dart-flutter-widget-guide--last-col-at line))
157+ (anchor (max 0 (if (< last-line-char first-guide-char) 0 first-guide-char)))
158+ (chars (lsp-dart-flutter-widget-guide--build-chars line guide-lines last-guide-char last-line-char anchor)))
159+ (--each-indexed chars (lsp-dart-flutter-widget-guide--add-overlay-to buffer line (+ it-index anchor) it))))))))))
160160
161161(define-minor-mode lsp-dart-flutter-widget-guides-mode
162162 " Mode for displaying flutter widget guide lines."
@@ -169,9 +169,5 @@ ANCHOR is the anchor point of the widget guide at LINE."
169169 (remove-overlays (point-min ) (point-max ) 'category 'lsp-dart-flutter-widget-guide )
170170 (remove-hook 'lsp-dart-outline-arrived-hook #'lsp-dart-flutter-widget-guide-check t )))))
171171
172- (add-hook 'lsp-before-open-hook (lambda ()
173- (when lsp-dart-flutter-widget-guides
174- (lsp-dart-flutter-widget-guides-mode 1 ))))
175-
176172(provide 'lsp-dart-flutter-widget-guide )
177173; ;; lsp-dart-flutter-widget-guide.el ends here
0 commit comments