Emacs-Kotlin-Mode-Maintainers/kotlin-mode@876cc27dc1 -> Emacs-Kotlin-Mode-Maintainers/kotlin-mode@3e0c34087b FStarLang/fstar-mode.el@3afbf04e4e -> FStarLang/fstar-mode.el@c95c2a61a6 Fanael/edit-indirect@7fffd87ac3 -> Fanael/edit-indirect@e3d86416bc Fuco1/sphinx-mode@b5ac514e21 -> Fuco1/sphinx-mode@9d4075c106 Groovy-Emacs-Modes/groovy-emacs-modes@84f89b68ec -> Groovy-Emacs-Modes/groovy-emacs-modes@bf732d367b NixOS/nix-mode@8e20de5ba7 -> NixOS/nix-mode@20ee8d8890 OCamlPro/ocp-indent@9e26c0a269 -> OCamlPro/ocp-indent@7c4d434132 ProofGeneral/PG@df19c7ba0e -> ProofGeneral/PG@e1e29acb04 Raku/raku-mode@eaac071f17 -> Raku/raku-mode@977b14a7c1 Sarcasm/irony-mode@5063d6b16d -> Sarcasm/irony-mode@870d1576fb agda/agda@2816605bfd -> agda/agda@2816605bfd amake/flutter.el@81c524a43c -> amake/flutter.el@08138f8c95 ananthakumaran/exunit.el@5bb115f327 -> ananthakumaran/exunit.el@0715c2dc2d ananthakumaran/tide@28137ed904 -> ananthakumaran/tide@b93e555858 asok/projectile-rails@30828afbfa -> asok/projectile-rails@772f4766b5 asok/rake@9c204334b0 -> asok/rake@452ea0caca brotzeit/rustic@f4b5c288af -> brotzeit/rustic@6eec971387 cdominik/cdlatex@f215b70c5c -> cdominik/cdlatex@8e963c6853 clojure-emacs/cider@36277802a4 -> clojure-emacs/cider@86dd3fee9d codesuki/add-node-modules-path@7d9be65b3b -> codesuki/add-node-modules-path@63f047fd84 crystal-lang-tools/emacs-crystal-mode@15998140b0 -> crystal-lang-tools/emacs-crystal-mode@96a8058205 cython/cython@5b325c9860 -> cython/cython@fdea2d6bed diml/utop@c87b8b2817 -> diml/utop@5d72a0ab34 dominikh/go-mode.el@32cbd78c0a -> dominikh/go-mode.el@3273fcece5 elixir-editors/emacs-elixir@6bbc1e5ac4 -> elixir-editors/emacs-elixir@e0d0466d83 emacs-csharp/csharp-mode@9917e1b97d -> emacs-csharp/csharp-mode@856ecbc0a7 emacs-ess/ESS@a7ce81bb76 -> emacs-ess/ESS@39eba28300 emacs-geiser/geiser@c1cc4da1ed -> emacs-geiser/geiser@9507e81a07 emacs-geiser/guile@cfd9116dcb -> emacs-geiser/guile@c641fcc50b emacs-lsp/lsp-dart@813d3c92db -> emacs-lsp/lsp-dart@fda433671f emacs-lsp/lsp-haskell@4e62cf897d -> emacs-lsp/lsp-haskell@7cf64944ab emacs-lsp/lsp-java@ce03cb6574 -> emacs-lsp/lsp-java@0968038b9a emacs-lsp/lsp-metals@695291761b -> emacs-lsp/lsp-metals@b7f77de694 emacs-lsp/lsp-pyright@d428dbcf18 -> emacs-lsp/lsp-pyright@3598bc7c47 emacs-php/php-mode@535aec8173 -> emacs-php/php-mode@5f26bec865 emacs-php/phpactor.el@272217fbb6 -> emacs-php/phpactor.el@34195f1533 emacs-straight/auctex@3b0a080ae5 -> emacs-straight/auctex@830e40a063 emacs-straight/csv-mode@8da54e8b4e -> emacs-straight/csv-mode@43f6106f0d emacs-typescript/typescript.el@e824162051 -> emacs-typescript/typescript.el@88f317f0b6 erlang/otp@c1ab4b5424 -> erlang/otp@9ba9f6e60d ethereum/emacs-solidity@6f7bd1641e -> ethereum/emacs-solidity@20fb77e089 factor/factor@7b451bb813 -> factor/factor@1aeafdb87b fsharp/emacs-fsharp-mode@c90d762c06 -> fsharp/emacs-fsharp-mode@b3aa4c53fc fxbois/web-mode@61f057a6ba -> fxbois/web-mode@efa853e5cf godotengine/emacs-gdscript-mode@b7bfa6a3b2 -> godotengine/emacs-gdscript-mode@4badcf6a0c greghendershott/racket-mode@a879a8d67b -> greghendershott/racket-mode@af9b760e7b hakimel/reveal.js@918ee5610a -> hakimel/reveal.js@e281b3234e haskell/haskell-mode@8402caa341 -> haskell/haskell-mode@cb573c8db5 hhvm/hack-mode@4c1c2b0939 -> hhvm/hack-mode@a522f61c08 technomancy/fennel-mode@47152970a9 -> https://git.sr.ht/~technomancy/fennel-mode@50ef3c6246f3 hvesalai/emacs-sbt-mode@e29464a82b -> hvesalai/emacs-sbt-mode@9fe1e8807c hylang/hy-mode@5253533ddb -> hylang/hy-mode@df814865a1 idris-hackers/idris-mode@3cc9361b4c -> idris-hackers/idris-mode@65d6db1b75 iyefrat/evil-tex@aa0ddf8e76 -> iyefrat/evil-tex@0fa85c3fc8 jcollard/elm-mode@f2e2d0053f -> jcollard/elm-mode@d4e434fa18 joaotavora/sly@2e00c3bd4b -> joaotavora/sly@4513c382f0 jorgenschaefer/emacs-buttercup@1de6be465c -> jorgenschaefer/emacs-buttercup@f5cbf97e10 joshwnj/json-mode@0e819e519a -> joshwnj/json-mode@eedb456003 jrblevin/markdown-mode@541bd7b48a -> jrblevin/markdown-mode@521658eb32 jschaf/powershell.el@d1b3f95669 -> jschaf/powershell.el@ce1f0ae0b2 jwiegley/emacs-async@5d365ffc6a -> jwiegley/emacs-async@c78bab7506 leanprover/lean-mode@bf32bb9793 -> leanprover/lean-mode@c1c68cc946 ledger/ledger-mode@19b84dc766 -> ledger/ledger-mode@b55384d9cd necaris/conda.el@7a34e06931 -> necaris/conda.el@9c28d7a853 nonsequitur/inf-ruby@03dd9c9d4e -> nonsequitur/inf-ruby@dbf4386bac ocaml-ppx/ocamlformat@22a3707da3 -> ocaml-ppx/ocamlformat@9324ea439a ocaml/dune@4d0a47edd5 -> ocaml/dune@4bc7629a5e ocaml/merlin@e4791e2298 -> ocaml/merlin@5d59c70659 ocaml/tuareg@00faf47a7c -> ocaml/tuareg@04f5ab6be9 osv/company-web@f0cc9187c9 -> osv/company-web@863fb84b81 pashky/restclient.el@176d9cb655 -> pashky/restclient.el@9e2cfa8652 pezra/rspec-mode@92ef785010 -> pezra/rspec-mode@4215ff1f2d polymode/polymode@54888d6c15 -> polymode/polymode@2094c92403 seagle0128/grip-mode@9220a560b4 -> seagle0128/grip-mode@6b427143a8 sebasmonia/sharper@08277b6c30 -> sebasmonia/sharper@96edd4a1db stan-dev/stan-mode@9bb858b9f1 -> stan-dev/stan-mode@150bbbe5fd swift-emacs/swift-mode@800efe2910 -> swift-emacs/swift-mode@0d1ef0ef18 tpapp/julia-repl@e90b1ed2cc -> tpapp/julia-repl@6c1d63511f wbolster/emacs-python-pytest@b603c5c7f2 -> wbolster/emacs-python-pytest@ea53891a21 yoshiki/yaml-mode@63b637f846 -> yoshiki/yaml-mode@535273d5a1 ziglang/zig-mode@aba01b6199 -> ziglang/zig-mode@aa20d630b8 - Refactors the :lang rust module to reflect changes upstream, in rustic (thanks to #6154). Close: #6154 Fix: #6070
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).