@@ -138,19 +138,29 @@ of this command."
138
138
" emulator.getEmulators"
139
139
nil
140
140
(-lambda (emulators)
141
- (->> lsp-dart-flutter-daemon-devices
142
- (-map #'cdr )
143
- (append emulators)
144
- (funcall callback)))))
141
+ (let ((devices-excluding-emulators (-remove (-lambda ((&FlutterDaemonDevice :emulator-id? ))
142
+ (and emulator-id?
143
+ (-first (lambda (emulator ) (string= emulator-id? (lsp:flutter-daemon-device-id emulator)))
144
+ (append emulators nil ))))
145
+ (-map #'cdr lsp-dart-flutter-daemon-devices))))
146
+ (->> devices-excluding-emulators
147
+ (append emulators)
148
+ (funcall callback))))))
145
149
146
150
(lsp-defun lsp-dart-flutter-daemon-launch ((device &as &FlutterDaemonDevice :id :is-device? ) callback)
147
151
" Launch DEVICE and wait for connected state and call CALLBACK."
148
152
(if is-device?
149
153
(funcall callback device)
150
- (-let* ((params (lsp-make-flutter-daemon-emulator-launch :emulator-id id)))
151
- (add-to-list 'lsp-dart-flutter-daemon-device-added-listeners
152
- (cons id (list :callback callback)))
153
- (lsp-dart-flutter-daemon--send " emulator.launch" params callback))))
154
+ (lsp-dart-flutter-daemon--send
155
+ " device.getDevices"
156
+ nil
157
+ (-lambda (devices)
158
+ (if-let (emulator-running? (-first (-lambda ((&FlutterDaemonDevice :emulator-id? )) (string= emulator-id? id)) (append devices nil )))
159
+ (funcall callback device)
160
+ (-let* ((params (lsp-make-flutter-daemon-emulator-launch :emulator-id id)))
161
+ (add-to-list 'lsp-dart-flutter-daemon-device-added-listeners
162
+ (cons id (list :callback callback)))
163
+ (lsp-dart-flutter-daemon--send " emulator.launch" params callback)))))))
154
164
155
165
;;;### autoload
156
166
(define-derived-mode lsp-dart-flutter-daemon-mode comint-mode lsp-dart-flutter-daemon-name
0 commit comments