@@ -138,19 +138,29 @@ of this command."
138138 " emulator.getEmulators"
139139 nil
140140 (-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))))))
145149
146150(lsp-defun lsp-dart-flutter-daemon-launch ((device &as &FlutterDaemonDevice :id :is-device? ) callback)
147151 " Launch DEVICE and wait for connected state and call CALLBACK."
148152 (if is-device?
149153 (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)))))))
154164
155165;;;### autoload
156166(define-derived-mode lsp-dart-flutter-daemon-mode comint-mode lsp-dart-flutter-daemon-name
0 commit comments