Skip to content

Commit b477a03

Browse files
committed
Migrate flutter-daemon to use plists and protocol
1 parent 2563583 commit b477a03

File tree

3 files changed

+16
-17
lines changed

3 files changed

+16
-17
lines changed

lsp-dart-dap.el

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -186,8 +186,8 @@ Call CALLBACK when the device is chosen and started successfully."
186186
(lsp-dart-log "No devices found. Try to create a device first via `flutter emulators` command")
187187
(-let* ((chosen-device (dap--completing-read "Select a device to use: "
188188
devices
189-
(-lambda ((&hash "id" "name" "is-device" "platformType" platform))
190-
(lsp-dart-dap--device-label id name is-device platform))
189+
(-lambda ((&FlutterDaemonDevice :id :name :is-device? :platform-type platform))
190+
(lsp-dart-dap--device-label id name is-device? platform))
191191
nil
192192
t)))
193193
(lsp-dart-flutter-daemon-launch chosen-device callback))))))

lsp-dart-flutter-daemon.el

Lines changed: 11 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@
2121

2222
(require 'comint)
2323
(require 'dash)
24-
(require 'ht)
2524
(require 'lsp-mode)
2625

2726
(require 'lsp-dart-protocol)
@@ -123,18 +122,17 @@ of this command."
123122
(lsp-dart-remove-from-alist it lsp-dart-flutter-daemon-devices)
124123
(setq lsp-dart-flutter-daemon-devices it)))
125124

126-
(defun lsp-dart-flutter-daemon--device-added (device)
125+
(lsp-defun lsp-dart-flutter-daemon--device-added ((device &as &FlutterDaemonDevice :id))
127126
"Add DEVICE to the devices list."
128-
(-let* ((id (gethash "id" device))
129-
(device-to-add (cons id device)))
130-
(ht-set! device "is-device" t)
127+
(-let ((device-to-add (cons id device)))
128+
(lsp:set-flutter-daemon-device-is-device? device t)
131129
(setq lsp-dart-flutter-daemon-devices
132130
(lsp-dart-remove-from-alist id lsp-dart-flutter-daemon-devices))
133131
(add-to-list 'lsp-dart-flutter-daemon-devices device-to-add)
134132
(-when-let (listener (alist-get id lsp-dart-flutter-daemon-device-added-listeners))
135133
(setq lsp-dart-flutter-daemon-device-added-listeners
136134
(lsp-dart-remove-from-alist id lsp-dart-flutter-daemon-device-added-listeners))
137-
(funcall (gethash "callback" listener) device))))
135+
(funcall (plist-get listener :callback) device))))
138136

139137
(defun lsp-dart-flutter-daemon-get-devices (callback)
140138
"Call CALLBACK with the available emulators and devices from Flutter daemon."
@@ -147,18 +145,17 @@ of this command."
147145
(append emulators)
148146
(funcall callback)))))
149147

150-
(defun lsp-dart-flutter-daemon-launch (emulator callback)
151-
"Launch EMULATOR and wait for connected state and call CALLBACK."
148+
(lsp-defun lsp-dart-flutter-daemon-launch ((device &as &FlutterDaemonDevice :id :is-device?) callback)
149+
"Launch DEVICE and wait for connected state and call CALLBACK."
152150
(if lsp-dart-flutter-daemon-current-device
153151
(funcall callback lsp-dart-flutter-daemon-current-device)
154152
(progn
155-
(setq lsp-dart-flutter-daemon-current-device emulator)
156-
(if (gethash "is-device" emulator)
157-
(funcall callback emulator)
158-
(-let* (((&hash "id") emulator)
159-
(params (ht ("emulatorId" id))))
153+
(setq lsp-dart-flutter-daemon-current-device device)
154+
(if is-device?
155+
(funcall callback device)
156+
(-let* ((params (lsp-make-flutter-daemon-emulator-launch :emulator-id id)))
160157
(add-to-list 'lsp-dart-flutter-daemon-device-added-listeners
161-
(cons id (ht ("callback" callback))))
158+
(cons id (list :callback callback)))
162159
(lsp-dart-flutter-daemon--send "emulator.launch" params callback))))))
163160

164161
(defun lsp-dart-flutter-daemon--reset-current-device (_session)

lsp-dart-protocol.el

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,9 @@
4141
(lsp-interface
4242
(FlutterDaemonCommand (:id :method) (:params))
4343
(FlutterDaemonResponse (:id) (:result :event :params))
44-
(FlutterDaemonResponseParams nil (:level :message)))
44+
(FlutterDaemonResponseParams nil (:level :message))
45+
(FlutterDaemonDevice (:id :name :platform :category :platformType :ephemeral :emulator) (:isDevice))
46+
(FlutterDaemonEmulatorLaunch (:emulatorId)))
4547

4648
(provide 'lsp-dart-protocol)
4749
;;; lsp-dart-protocol.el ends here

0 commit comments

Comments
 (0)