Skip to content

Commit 8a5ca12

Browse files
authored
Merge pull request #36 from emacs-lsp/plists
Migrate all hts -> plists
2 parents 7703507 + 9baddd4 commit 8a5ca12

File tree

6 files changed

+58
-50
lines changed

6 files changed

+58
-50
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: 24 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,9 @@
2121

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

26+
(require 'lsp-dart-protocol)
2727
(require 'lsp-dart-utils)
2828

2929
(defconst lsp-dart-flutter-daemon-buffer-name "*LSP Dart - Flutter daemon*")
@@ -66,10 +66,10 @@
6666
(defun lsp-dart-flutter-daemon--build-command (id method &optional params)
6767
"Build a command from an ID and METHOD.
6868
PARAMS is the optional method params."
69-
(let ((command (ht ("id" id)
70-
("method" method))))
69+
(let ((command (lsp-make-flutter-daemon-command :id id
70+
:method method)))
7171
(when params
72-
(ht-set! command "params" params))
72+
(lsp:set-flutter-daemon-command-params? command params))
7373
(concat "["
7474
(lsp--json-serialize command)
7575
"]\n")))
@@ -86,22 +86,23 @@ PARAMS is the optional method params."
8686

8787
(defun lsp-dart-flutter-daemon--handle-responses (raw-response)
8888
"Handle Flutter daemon response from RAW-RESPONSE."
89-
(-map (-lambda ((&hash "id" "event" "result" "params" (params &as &hash? "level" "message")))
90-
(if event
91-
(pcase event
89+
(-map (-lambda ((&FlutterDaemonResponse :id :event? :result?
90+
:params? (params &as &FlutterDaemonResponseParams? :level? :message?)))
91+
(if event?
92+
(pcase event?
9293
("device.removed" (lsp-dart-flutter-daemon--device-removed params))
9394

9495
("device.added" (lsp-dart-flutter-daemon--device-added params))
9596

96-
("daemon.logMessage" (lsp-dart-flutter-daemon--log level message)))
97+
("daemon.logMessage" (lsp-dart-flutter-daemon--log level? message?)))
9798
(let* ((command (alist-get id lsp-dart-flutter-daemon-commands))
98-
(callback (gethash "callback" command)))
99+
(callback (plist-get command :callback)))
99100
(when command
100101
(setq lsp-dart-flutter-daemon-commands
101102
(lsp-dart-remove-from-alist id lsp-dart-flutter-daemon-commands)))
102103
(when callback
103-
(when result
104-
(funcall callback result))))))
104+
(when result?
105+
(funcall callback result?))))))
105106
(lsp-dart-flutter-daemon--raw->response raw-response)))
106107

107108
(defun lsp-dart-flutter-daemon--send (method &optional params callback)
@@ -112,7 +113,7 @@ of this command."
112113
(lsp-dart-flutter-daemon-start))
113114
(let* ((id (lsp-dart-flutter-daemon--generate-command-id))
114115
(command (lsp-dart-flutter-daemon--build-command id method params)))
115-
(add-to-list 'lsp-dart-flutter-daemon-commands (cons id (ht ("callback" callback))))
116+
(add-to-list 'lsp-dart-flutter-daemon-commands (cons id (list :callback callback)))
116117
(comint-send-string (get-buffer-process lsp-dart-flutter-daemon-buffer-name) command)))
117118

118119
(defun lsp-dart-flutter-daemon--device-removed (device)
@@ -121,18 +122,17 @@ of this command."
121122
(lsp-dart-remove-from-alist it lsp-dart-flutter-daemon-devices)
122123
(setq lsp-dart-flutter-daemon-devices it)))
123124

124-
(defun lsp-dart-flutter-daemon--device-added (device)
125+
(lsp-defun lsp-dart-flutter-daemon--device-added ((device &as &FlutterDaemonDevice :id))
125126
"Add DEVICE to the devices list."
126-
(-let* ((id (gethash "id" device))
127-
(device-to-add (cons id device)))
128-
(ht-set! device "is-device" t)
127+
(-let ((device-to-add (cons id device)))
128+
(lsp:set-flutter-daemon-device-is-device? device t)
129129
(setq lsp-dart-flutter-daemon-devices
130130
(lsp-dart-remove-from-alist id lsp-dart-flutter-daemon-devices))
131131
(add-to-list 'lsp-dart-flutter-daemon-devices device-to-add)
132132
(-when-let (listener (alist-get id lsp-dart-flutter-daemon-device-added-listeners))
133133
(setq lsp-dart-flutter-daemon-device-added-listeners
134134
(lsp-dart-remove-from-alist id lsp-dart-flutter-daemon-device-added-listeners))
135-
(funcall (gethash "callback" listener) device))))
135+
(funcall (plist-get listener :callback) device))))
136136

137137
(defun lsp-dart-flutter-daemon-get-devices (callback)
138138
"Call CALLBACK with the available emulators and devices from Flutter daemon."
@@ -145,18 +145,17 @@ of this command."
145145
(append emulators)
146146
(funcall callback)))))
147147

148-
(defun lsp-dart-flutter-daemon-launch (emulator callback)
149-
"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."
150150
(if lsp-dart-flutter-daemon-current-device
151151
(funcall callback lsp-dart-flutter-daemon-current-device)
152152
(progn
153-
(setq lsp-dart-flutter-daemon-current-device emulator)
154-
(if (gethash "is-device" emulator)
155-
(funcall callback emulator)
156-
(-let* (((&hash "id") emulator)
157-
(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)))
158157
(add-to-list 'lsp-dart-flutter-daemon-device-added-listeners
159-
(cons id (ht ("callback" callback))))
158+
(cons id (list :callback callback)))
160159
(lsp-dart-flutter-daemon--send "emulator.launch" params callback))))))
161160

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

lsp-dart-flutter-widget-guide.el

Lines changed: 18 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@
2020
;;; Code:
2121

2222
(require 'dash)
23-
(require 'ht)
2423
(require 'lsp-mode)
2524

2625
(require 'lsp-dart-protocol)
@@ -54,8 +53,8 @@
5453
(goto-char (point-min))
5554
(forward-line line)
5655
(back-to-indentation)
57-
(ht ("line" line)
58-
("character" (current-column)))))
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."
@@ -79,8 +78,8 @@ Return nil if the widget guilde does not apply."
7978
(when children-start
8079
(let ((start-pos (lsp-dart-flutter-widget-guide--first-non-whitespace-pos parent-line)))
8180
(->> children-start
82-
(--map (ht ("start" start-pos)
83-
("end" (lsp-dart-flutter-widget-guide--first-non-whitespace-pos it))))
81+
(--map (lsp-make-range :start start-pos
82+
:end (lsp-dart-flutter-widget-guide--first-non-whitespace-pos it)))
8483
(-flatten)))))))
8584

8685
(lsp-defun lsp-dart-flutter-widget-guide--outline->guides ((outline &as &FlutterOutline :children))
@@ -97,14 +96,14 @@ Return nil if the widget guilde does not apply."
9796

9897
(defun lsp-dart-flutter-widget-guide--guides->guides-by-line (guides)
9998
"Convert a widget guide GUIDES to a map by line."
100-
(let ((guides-by-line (ht-create)))
99+
(let ((guides-by-line '()))
101100
(seq-doseq (guide guides)
102101
(-let (((&Range :start (&Position :line start-line)
103102
:end (&Position :line end-line)) guide))
104103
(while (<= start-line end-line)
105-
(if-let ((cur-guides (ht-get guides-by-line start-line)))
106-
(ht-set! guides-by-line start-line (append cur-guides (list guide)))
107-
(ht-set! guides-by-line start-line (list guide)))
104+
(if-let ((cur-guides (plist-get guides-by-line start-line)))
105+
(add-to-list 'guides-by-line (cons start-line (append cur-guides (list guide))))
106+
(add-to-list 'guides-by-line (cons start-line (list guide))))
108107
(setq start-line (1+ start-line)))))
109108
guides-by-line))
110109

@@ -145,16 +144,16 @@ ANCHOR is the anchor point of the widget guide at LINE."
145144
(remove-overlays (point-min) (point-max) 'category 'lsp-dart-flutter-widget-guide)
146145
(let* ((guides (lsp-dart-flutter-widget-guide--outline->guides outline))
147146
(guides-by-line (lsp-dart-flutter-widget-guide--guides->guides-by-line guides)))
148-
(ht-each (lambda (line guide-lines)
149-
(let* ((first-guide-char (-min (--map (min (-> it lsp:range-start lsp:position-character)
150-
(-> it lsp:range-end lsp:position-character)) guide-lines)))
151-
(last-guide-char (-max (--map (max (-> it lsp:range-start lsp:position-character)
152-
(-> it lsp:range-end lsp:position-character)) guide-lines)))
153-
(last-line-char (lsp-dart-flutter-widget-guide--last-col-at line))
154-
(anchor (max 0 (if (< last-line-char first-guide-char) 0 first-guide-char)))
155-
(chars (lsp-dart-flutter-widget-guide--build-chars line guide-lines last-guide-char last-line-char anchor)))
156-
(--each-indexed chars (lsp-dart-flutter-widget-guide--add-overlay-to buffer line (+ it-index anchor) it))))
157-
guides-by-line)))))
147+
(seq-doseq (line (mapcar 'car guides-by-line))
148+
(let* ((guide-lines (alist-get line guides-by-line))
149+
(first-guide-char (-min (--map (min (-> it lsp:range-start lsp:position-character)
150+
(-> it lsp:range-end lsp:position-character)) guide-lines)))
151+
(last-guide-char (-max (--map (max (-> it lsp:range-start lsp:position-character)
152+
(-> it lsp:range-end lsp:position-character)) guide-lines)))
153+
(last-line-char (lsp-dart-flutter-widget-guide--last-col-at line))
154+
(anchor (max 0 (if (< last-line-char first-guide-char) 0 first-guide-char)))
155+
(chars (lsp-dart-flutter-widget-guide--build-chars line guide-lines last-guide-char last-line-char anchor)))
156+
(--each-indexed chars (lsp-dart-flutter-widget-guide--add-overlay-to buffer line (+ it-index anchor) it))))))))
158157

159158
(provide 'lsp-dart-flutter-widget-guide)
160159
;;; lsp-dart-flutter-widget-guide.el ends here

lsp-dart-protocol.el

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,5 +38,15 @@
3838
(FlutterOutline (:range :codeRange :children :kind) (:dartElement :label :className :variableName :attributes))
3939
(FlutterOutlineAttribute (:name :label) nil))
4040

41+
(lsp-interface
42+
(FlutterWidgetGuide ()))
43+
44+
(lsp-interface
45+
(FlutterDaemonCommand (:id :method) (:params))
46+
(FlutterDaemonResponse (:id) (:result :event :params))
47+
(FlutterDaemonResponseParams nil (:level :message))
48+
(FlutterDaemonDevice (:id :name :platform :category :platformType :ephemeral :emulator) (:isDevice))
49+
(FlutterDaemonEmulatorLaunch (:emulatorId)))
50+
4151
(provide 'lsp-dart-protocol)
4252
;;; lsp-dart-protocol.el ends here

lsp-dart.el

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
;;; lsp-dart.el --- Dart support lsp-mode -*- lexical-binding: t; -*-
22

33
;; Version: 1.11.9
4-
;; Package-Requires: ((emacs "25.2") (lsp-treemacs "0.1") (lsp-mode "6.0") (dap-mode "0.4") (ht "2.0") (f "0.20.0") (dash "2.14.1") (pkg-info "0.4") (dart-mode "1.0.5"))
4+
;; Package-Requires: ((emacs "25.2") (lsp-treemacs "0.1") (lsp-mode "6.4") (dap-mode "0.4") (ht "2.0") (f "0.20.0") (dash "2.14.1") (pkg-info "0.4") (dart-mode "1.0.5"))
55
;; Keywords: languages, extensions
66
;; URL: https://emacs-lsp.github.io/lsp-dart
77

test/lsp-dart-test.el

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -64,12 +64,12 @@
6464
(ert-deftest lsp-dart--handle-analyzer-status--when-analyzing-test ()
6565
(with-mock
6666
(mock (lsp-dart-workspace-status "Analyzing project..." "workspace"))
67-
(lsp-dart--handle-analyzer-status "workspace" (ht ("isAnalyzing" t)))))
67+
(lsp-dart--handle-analyzer-status "workspace" (lsp-make-analyzer-status-notification :is-analyzing t))))
6868

69-
(ert-deftest lsp-dart--handle-analyzer-status--when-analyzing-test ()
69+
(ert-deftest lsp-dart--handle-analyzer-status--when-not-analyzing-test ()
7070
(with-mock
7171
(mock (lsp-dart-workspace-status nil "workspace"))
72-
(lsp-dart--handle-analyzer-status "workspace" (ht ("isAnalyzing" nil)))))
72+
(lsp-dart--handle-analyzer-status "workspace" (lsp-make-analyzer-status-notification :is-analyzing nil))))
7373

7474
(ert-deftest lsp-dart-version--test ()
7575
(let ((pkg-version (lsp-dart-test-package-version "lsp-dart.el")))

0 commit comments

Comments
 (0)