@@ -181,6 +181,19 @@ ITEMS is the outline items data."
181
181
:ret-action (lambda (&rest _ ) (lsp-dart--outline-tree-ret-action uri range)))))
182
182
items))
183
183
184
+ (defun lsp-dart--build-flutter-outline-widget-actions (uri range )
185
+ " Build the action options for the Flutter outline tree view.
186
+ URI is the source of the outline.
187
+ RANGE is the range for currently build item."
188
+ (-when-let (buffer (lsp--buffer-for-file (lsp--uri-to-path uri)))
189
+ (with-current-buffer buffer
190
+ (goto-char (-> range lsp--range-to-region car ))
191
+ (->> (lsp-code-actions-at-point)
192
+ (-filter (-lambda ((&hash " kind" ))
193
+ (and kind (equal " refactor" kind))))
194
+ (-map (-lambda ((action &as &hash " title" ))
195
+ `[, title (lsp-execute-code-action , action )]))))))
196
+
184
197
(defun lsp-dart--flutter-outline->tree (uri items )
185
198
" Builds a Flutter outline tree.
186
199
URI is the source of the outline.
@@ -204,24 +217,29 @@ ITEMS is the outline items data."
204
217
:children (lambda (&rest _ )
205
218
(unless (seq-empty-p children)
206
219
(lsp-dart--flutter-outline->tree uri children)))
207
- :ret-action (lambda (&rest _ ) (lsp-dart--outline-tree-ret-action uri range)))))
220
+ :ret-action (lambda (&rest _ ) (lsp-dart--outline-tree-ret-action uri range))
221
+ :actions (when widget?
222
+ (lsp-dart--build-flutter-outline-widget-actions uri range))
223
+ :uri uri)))
208
224
items))
209
225
210
226
(defun lsp-dart--render-outline-tree (uri outline )
211
227
" Render an outline view with the source URI and an OUTLINE data."
212
- (lsp-treemacs-render
213
- (lsp-dart--outline->tree uri outline)
214
- " Outline"
215
- t
216
- " *Dart Outline*" ))
228
+ (save-excursion
229
+ (lsp-treemacs-render
230
+ (lsp-dart--outline->tree uri outline)
231
+ " Outline"
232
+ t
233
+ " *Dart Outline*" )))
217
234
218
235
(defun lsp-dart--render-flutter-outline-tree (uri outline )
219
236
" Render an Flutter outline view with the source URI and an OUTLINE data."
220
- (lsp-treemacs-render
221
- (lsp-dart--flutter-outline->tree uri outline)
222
- " Flutter Outline"
223
- t
224
- " *Flutter Outline*" ))
237
+ (save-excursion
238
+ (lsp-treemacs-render
239
+ (lsp-dart--flutter-outline->tree uri outline)
240
+ " Flutter Outline"
241
+ t
242
+ " *Flutter Outline*" )))
225
243
226
244
(defun lsp-dart--show-outline (ignore-focus? )
227
245
" Show an outline tree.
0 commit comments