200ok-ch/counsel-jq@104c77b -> 200ok-ch/counsel-jq@f5bfed8 Andersbakken/rtags@e6c7005 -> Andersbakken/rtags@63a7d9b FStarLang/fstar-mode.el@5670fc0 -> FStarLang/fstar-mode.el@3afbf04 Kungsgeten/org-brain@6e3d861) -> Kungsgeten/org-brain@1ae4fd4) NixOS/nix-mode@bb0b49e -> NixOS/nix-mode@e32c6bf OVYA/php-cs-fixer@95eace9 -> OVYA/php-cs-fixer@c5b5d8a ProofGeneral/PG@0fdb1ae -> ProofGeneral/PG@702f5b9 Sarcasm/irony-mode@1e1aaba -> Sarcasm/irony-mode@76fd37f abicky/nodejs-repl.el@f5ce3d5 -> abicky/nodejs-repl.el@3b84105 agda/agda@08191e6 -> agda/agda@5070bd8 amake/flutter.el@78b3c57 -> amake/flutter.el@696228a ananthakumaran/tide@ac5f070 -> ananthakumaran/tide@a43a37b arnested/php-extras@81ebd7c -> arnested/php-extras@d410c5a borkdude/flycheck-clj-kondo@152df7f -> borkdude/flycheck-clj-kondo@a558bda brotzeit/rustic@7c9d55b -> brotzeit/rustic@91ad5db chachi/cuda-mode@9ae9eac -> chachi/cuda-mode@7f59351 clojure-emacs/cider@f1c2a79 -> clojure-emacs/cider@ef47c1d clojure-emacs/clojure-mode@75c2889 -> clojure-emacs/clojure-mode@53ef8ac cpitclaudel/company-coq@b096cb5 -> cpitclaudel/company-coq@4da7b41 cython/cython@ba6cbed -> cython/cython@21b4e53 dgutov/robe@082da38 -> dgutov/robe@f04dcc7 dominikh/go-mode.el@d17d210 -> dominikh/go-mode.el@fdf46fe dominikh/go-mode.el@d17d210 -> dominikh/go-mode.el@fdf46fe elixir-editors/emacs-elixir@01b3324 -> elixir-editors/emacs-elixir@b78e7f7 emacs-ess/ESS@a694b26 -> emacs-ess/ESS@d013616 emacs-lsp/lsp-dart@c1ff5ce -> emacs-lsp/lsp-dart@b81b1ec emacs-lsp/lsp-java@3f1ed17 -> emacs-lsp/lsp-java@f43b00a emacs-lsp/lsp-metals@e42c0b2) -> emacs-lsp/lsp-metals@31dafff) emacs-lsp/lsp-pyright@ccd0007 -> emacs-lsp/lsp-pyright@d9e7d3c emacs-lsp/lsp-python-ms@a0c56f4 -> emacs-lsp/lsp-python-ms@c4ebc7a emacs-php/php-mode@f4c7c69 -> emacs-php/php-mode@7e5722c emacs-straight/adaptive-wrap@319db64 -> emacs-straight/adaptive-wrap@8f60ee7 emacs-straight/csv-mode@6353374 -> emacs-straight/csv-mode@eb3ec00 emacs-straight/org-mode@a88806b -> emacs-straight/org-mode@7c8dce7 emacs-straight/rainbow-mode@fdff98b -> emacs-straight/rainbow-mode@949166c emacs-straight/sml-mode@60b01d7 -> emacs-straight/sml-mode@0338e97 emacs-typescript/typescript.el@e6f68ab -> emacs-typescript/typescript.el@54f14c4 erlang/otp@8efb945 -> erlang/otp@8fc0641 factor/factor@c6e15bd -> factor/factor@94a922a felipeochoa/rjsx-mode@0061587 -> felipeochoa/rjsx-mode@b697fe4 fsharp/emacs-fsharp-mode@68dfc22 -> fsharp/emacs-fsharp-mode@13fbf4c fxbois/web-mode@b4b0a85 -> fxbois/web-mode@890e837 galaunay/poetry.el@eb238d9 -> galaunay/poetry.el@d5163fe godotengine/emacs-gdscript-mode@55a6637 -> godotengine/emacs-gdscript-mode@75fe658 greghendershott/racket-mode@0ca8b26 -> greghendershott/racket-mode@3563081 haskell/haskell-mode@e726776 -> haskell/haskell-mode@0d39c84 hlissner/evil-org-mode@658dadf) -> hlissner/evil-org-mode@a9706da) hvesalai/emacs-sbt-mode@4358ed8 -> hvesalai/emacs-sbt-mode@7b121fc hvesalai/emacs-scala-mode@1d08e88 -> hvesalai/emacs-scala-mode@9d3b56e hylang/hy-mode@7256844 -> hylang/hy-mode@5253533 joaotavora/sly@fce4f9b -> joaotavora/sly@68561f1 jorgenschaefer/emacs-buttercup@cccdedf -> jorgenschaefer/emacs-buttercup@2f24a44 jorgenschaefer/pyvenv@861998b -> jorgenschaefer/pyvenv@0bf4b87 josteink/csharp-mode@f46d656 -> josteink/csharp-mode@4916829 jrblevin/markdown-mode@152eae2 -> jrblevin/markdown-mode@dcad557 kaushalmodi/ox-hugo@1909c6e) -> kaushalmodi/ox-hugo@f24c9bd) nim-lang/nim-mode@16a245e -> nim-lang/nim-mode@d832d6b ocaml-ppx/ocamlformat@1dec6c3 -> ocaml-ppx/ocamlformat@860266b ocaml/dune@f967df6 -> ocaml/dune@4d097cd ocaml/merlin@06833e9 -> ocaml/merlin@28193d5 oer/org-re-reveal@2035217 -> oer/org-re-reveal@0062756 org-roam/org-roam@d913447) -> org-roam/org-roam@be95b42) rexim/org-cliplink@82402ca -> rexim/org-cliplink@13e0940 salmanebah/opencl-mode@55cb49c -> salmanebah/opencl-mode@15091ef senny/rvm.el@6897576) -> senny/rvm.el@b2498a4) skuro/plantuml-mode@5889166 -> skuro/plantuml-mode@ea45a13 swift-emacs/swift-mode@e65a80a -> swift-emacs/swift-mode@0bc8d8d technomancy/fennel-mode@7a8824a -> technomancy/fennel-mode@fa56106 wbolster/emacs-python-pytest@a2f88b1 -> wbolster/emacs-python-pytest@4a1c4c8 xuchunyang/elisp-demos@3cca496 -> xuchunyang/elisp-demos@ed9578d yoshiki/yaml-mode@68fecb5 -> yoshiki/yaml-mode@fc5e1c5 Fixes #4237
lang/dart
Description
Dart is a client-optimized language by Google for fast apps on any platform. It is fast and optimized for UI, famous for the Flutter framework, also made by Google. Both Flutter and Dart are free and open-source.
This module wraps dart-mode
, with LSP features like code completion for .dart
files,
syntax highlighting, debugging, closing labels, etc.
Maintainers
Module Flags
+lsp
Enable LSP server integration.+flutter
Addsflutter
integration and some sane defaults for Flutter development along withhover
for desktop development.
Plugins
Prerequisites
Make sure that the Dart SDK is on your PATH
, and if using Flutter, make sure
the Flutter binary is on your PATH
as well.
Installing Dart SDK
Before starting note that Flutter SDK will have a version of Dart. Therefore, there is no need to install Dart. If you want to use Flutter just see the next part.
The stable version of the SDK is in most major distributions repositories. If you find it necessary to install any other version or build from source, please refer to the official website at: https://dart.dev/get-dart
-
On Debian (also Ubuntu and its derivations):
sudo apt-get install dart
-
On Arch Linux (and derivations like Manjaro):
sudo pacman -S dart
-
On macOS:
brew tap dart-lang/dart brew install dart
-
On NixOS:
nix-env -iA nixpkgs.dart
Installing Flutter SDK
Due to complications with permissions, it is suggested not to use AUR or any automatic installation tools for Flutter SDK.
On any system just run the following commands to install Flutter, once you have met dependencies named on the site:
git clone https://github.com/flutter/flutter --branch stable # to download Flutter
export PATH="$PATH:$(pwd)/flutter/bin" # to add it to PATH
flutter doctor # for Dependency check and further instructions
Features
- Syntax highlighting and formatting for
.dart
files provided by LSP - Auto import
- Widget guide lines for Flutter
- Closing labels for constructors
- Run tests interactively
- Outline support via
lsp-treemacs
- Emacs functions for running and debugging Flutter projects
Configuration
Dart & Flutter
On Linux, the installers for Dart and Flutter use the /opt
directory, and this
module assumes that. However, you may set lsp-dart-sdk-dir
to your Dart
install directory and flutter-sdk-path
to you flutter SDK folder, to make sure
LSP can find the language server included with the Dart SDK.
Alternatively, these variables shouldn't be necessary if you just include Dart
and Flutter on your PATH
variable.
Android
You will also need to setup your system for Android development if you intend to
use Flutter to develop mobile applications. Refer to your distributions package
manager for details. In most distributions the /opt/android-sdk
directory is
used, and you might have to change some permissions in this directory since it's
owned by root. The Arch Linux wiki has a great guide on this here.
Flutter mobile development on desktop
Hover is an application that can run Flutter mobile apps on your desktop, this makes the mobile development a lot easier without the need to setup an Android emulator.
Troubleshooting
See the configuration section for information on the binaries for Dart and
Flutter. On new installs to the /opt
directory, you will likely need to edit
the permissions of the /opt/dart-sdk
and /opt/flutter
directories (not to
mention the Android SDK, as discussed above).