Merge pull request #2729 from MYDavoodeh/dartmode
Updated: Add lang/dart module #2549 (Originally by @Sevensidedmarble)
This commit is contained in:
commit
6fffa5c4c4
4 changed files with 144 additions and 0 deletions
104
modules/lang/dart/README.org
Normal file
104
modules/lang/dart/README.org
Normal file
|
@ -0,0 +1,104 @@
|
|||
#+TITLE: lang/dart
|
||||
#+DATE: February 16, 2020
|
||||
#+SINCE: v3.0.0
|
||||
#+STARTUP: inlineimages nofold
|
||||
|
||||
* Table of Contents :TOC_3:noexport:
|
||||
- [[#description][Description]]
|
||||
- [[#maintainers][Maintainers]]
|
||||
- [[#module-flags][Module Flags]]
|
||||
- [[#plugins][Plugins]]
|
||||
- [[#prerequisites][Prerequisites]]
|
||||
- [[#installing-dart-sdk][Installing Dart SDK]]
|
||||
- [[#installing-flutter-sdk][Installing Flutter SDK]]
|
||||
- [[#features][Features]]
|
||||
- [[#configuration][Configuration]]
|
||||
- [[#dart--flutter][Dart & Flutter]]
|
||||
- [[#android][Android]]
|
||||
- [[#troubleshooting][Troubleshooting]]
|
||||
|
||||
* Description
|
||||
[[https://dart.dev/][Dart]] is a client-optimized language by Google for fast apps on any platform.
|
||||
It is fast and optimized for UI, Famous for the [[https://flutter.io/][Flutter]] framework, also
|
||||
made by Google. Both Flutter and Dart are free and open-source.
|
||||
|
||||
** Maintainers
|
||||
This module has no dedicated maintainers.
|
||||
|
||||
** Module Flags
|
||||
The `dart` module wraps `dart-mode`, with LSP code completion for `.dart` files,
|
||||
syntax highlighting, etc. Included is a `+lsp` flag for enabling LSP features,
|
||||
and a `+flutter` flag for working with Flutter.
|
||||
|
||||
+ =+lsp= Will start LSP automatically in `dart-mode-hook`.
|
||||
+ =+flutter= Adds the `flutter` package and some settings for Flutter development.
|
||||
|
||||
** Plugins
|
||||
+ [[https://github.com/bradyt/dart-mode][dart-mode]]
|
||||
+ [[https://github.com/amake/flutter.el][flutter.el]]
|
||||
|
||||
* 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), you can simply install the SDK via:
|
||||
#+BEGIN_SRC shell
|
||||
sudo apt-get install dart
|
||||
#+END_SRC
|
||||
Or on Arch (and its derivations, like Manjaro), you can install it using:
|
||||
#+BEGIN_SRC shell
|
||||
sudo pacman -S dart
|
||||
#+END_SRC
|
||||
And finally in MacOS, the [[https://brew.sh/][Homebrew]] can come in handy. If you have it installed
|
||||
just run:
|
||||
#+BEGIN_SRC shell
|
||||
brew tap dart-lang/dart
|
||||
brew install dart#+END_SRC
|
||||
#+END_SRC
|
||||
|
||||
** 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 [[https://flutter.dev/docs/get-started/install/][the site]]:
|
||||
#+BEGIN_SRC shell
|
||||
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
|
||||
#+END_SRC
|
||||
|
||||
* Features
|
||||
+ Syntax highlighting and formatting for `.dart` files provided by LSP
|
||||
+ 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, if it differs, 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 [[https://wiki.archlinux.org/index.php/Android][Arch Linux wiki has a great guide on this here.]]
|
||||
|
||||
* 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).
|
18
modules/lang/dart/config.el
Normal file
18
modules/lang/dart/config.el
Normal file
|
@ -0,0 +1,18 @@
|
|||
;;; lang/dart/config.el -*- lexical-binding: t; -*-
|
||||
|
||||
(after! dart-mode
|
||||
(when (featurep! +lsp)
|
||||
(add-hook 'dart-mode-local-vars-hook #'lsp!)
|
||||
(when (and (featurep! +flutter) IS-LINUX)
|
||||
(when-let (path (doom-glob "/opt/flutter/bin/cache/dart-sdk"))
|
||||
(setq lsp-dart-sdk-dir path)))))
|
||||
|
||||
|
||||
|
||||
(use-package! flutter
|
||||
:when (featurep! +flutter)
|
||||
:defer t
|
||||
:config
|
||||
(map! :map dart-mode-map
|
||||
:localleader
|
||||
"r" #'flutter-run-or-hot-reload))
|
13
modules/lang/dart/doctor.el
Normal file
13
modules/lang/dart/doctor.el
Normal file
|
@ -0,0 +1,13 @@
|
|||
;;; lang/dart/doctor.el -*- lexical-binding: t; -*-
|
||||
|
||||
(assert! (or (not (featurep! +lsp))
|
||||
(featurep! :tools lsp))
|
||||
"This module requires (:tools lsp)")
|
||||
|
||||
(unless (executable-find "dart")
|
||||
(warn! "Dart isn't on PATH."))
|
||||
|
||||
(when (featurep! +lsp)
|
||||
(require 'dart-mode)
|
||||
(unless (file-readable-p lsp-dart-sdk-dir)
|
||||
(warn! "LSP Mode can't find lsp-dart-sdk-dir.")))
|
9
modules/lang/dart/packages.el
Normal file
9
modules/lang/dart/packages.el
Normal file
|
@ -0,0 +1,9 @@
|
|||
;; -*- no-byte-compile: t; -*-
|
||||
;;; lang/dart/packages.el
|
||||
|
||||
(package! dart-mode :pin "04fcd649f1")
|
||||
|
||||
;; Optional module features
|
||||
|
||||
(when (featurep! +flutter)
|
||||
(package! flutter :pin "ec92a4df84"))
|
Loading…
Add table
Add a link
Reference in a new issue