|
36 | 36 | :group 'applications |
37 | 37 | :link '(url-link :tag "GitHub" "https://github.com/emacs-lisp/lsp-java")) |
38 | 38 |
|
39 | | -(defcustom lsp-dart-sdk-dir "~/flutter/bin/cache/dart-sdk/" |
40 | | - "Install directory for dart-sdk." |
| 39 | +(defcustom lsp-dart-sdk-dir nil |
| 40 | + "Install directory for dart-sdk. |
| 41 | +When nil, it will try to find the dart sdk from the dart or flutter executables |
| 42 | +in the PATH env." |
41 | 43 | :group 'lsp-dart |
42 | 44 | :risky t |
43 | 45 | :type 'directory) |
@@ -113,6 +115,16 @@ Defaults to side following treemacs default." |
113 | 115 |
|
114 | 116 | ;;; Internal |
115 | 117 |
|
| 118 | +(defun lsp-dart--find-sdk-dir () |
| 119 | + "Find dart sdk by searching for dart executable or flutter cache dir." |
| 120 | + (-when-let (dart (or (executable-find "dart") |
| 121 | + (-when-let (flutter (executable-find "flutter")) |
| 122 | + (expand-file-name "cache/dart-sdk/bin/dart" |
| 123 | + (file-name-directory flutter))))) |
| 124 | + (-> dart |
| 125 | + (file-truename) |
| 126 | + (locate-dominating-file "bin")))) |
| 127 | + |
116 | 128 | (defun lsp-dart--outline-kind->icon (kind) |
117 | 129 | "Maps an outline KIND to a treemacs icon symbol. |
118 | 130 | Kinds from https://github.com/dart-lang/sdk/blob/master/pkg/analysis_server/tool/spec/generated/java/types/ElementKind.java" |
@@ -252,9 +264,10 @@ It updates the Flutter outline view if it already exists." |
252 | 264 | (defun lsp-dart--server-command () |
253 | 265 | "Generate LSP startup command." |
254 | 266 | (or lsp-dart-server-command |
255 | | - `(,(expand-file-name (f-join lsp-dart-sdk-dir "bin/dart")) |
256 | | - ,(expand-file-name (f-join lsp-dart-sdk-dir "bin/snapshots/analysis_server.dart.snapshot")) |
257 | | - "--lsp"))) |
| 267 | + (let ((sdk-dir (or lsp-dart-sdk-dir (lsp-dart--find-sdk-dir)))) |
| 268 | + `(,(expand-file-name (f-join sdk-dir "bin/dart")) |
| 269 | + ,(expand-file-name (f-join sdk-dir "bin/snapshots/analysis_server.dart.snapshot")) |
| 270 | + "--lsp")))) |
258 | 271 |
|
259 | 272 | (defun lsp-dart--handle-closing-labels (_workspace params) |
260 | 273 | "Closing labels notification handling. |
|
0 commit comments