yeet
This commit is contained in:
118
.config/emacs/modules/lang/dart/README.org
Normal file
118
.config/emacs/modules/lang/dart/README.org
Normal file
@@ -0,0 +1,118 @@
|
||||
#+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]]
|
||||
- [[#flutter-mobile-development-on-desktop][Flutter mobile development on desktop]]
|
||||
- [[#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.
|
||||
|
||||
This module wraps ~dart-mode~, with [[https://microsoft.github.io/language-server-protocol/][LSP]] features like code completion for =.dart= files,
|
||||
syntax highlighting, debugging, closing labels, etc.
|
||||
|
||||
** Maintainers
|
||||
+ [[https://github.com/ericdallo][@ericdallo]]
|
||||
|
||||
** Module Flags
|
||||
+ =+lsp= Enable LSP server integration.
|
||||
+ =+flutter= Adds ~flutter~ integration and some sane defaults for Flutter
|
||||
development along with ~hover~ for desktop development.
|
||||
|
||||
** Plugins
|
||||
+ [[https://github.com/bradyt/dart-mode][dart-mode]]
|
||||
+ [[https://github.com/amake/flutter.el][flutter.el]]
|
||||
+ [[https://github.com/ericdallo/hover.el][hover.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):*
|
||||
#+BEGIN_SRC shell
|
||||
sudo apt-get install dart
|
||||
#+END_SRC
|
||||
+ *On Arch Linux (and derivations like Manjaro):*
|
||||
#+BEGIN_SRC shell
|
||||
sudo pacman -S dart
|
||||
#+END_SRC
|
||||
+ *On macOS*:
|
||||
#+BEGIN_SRC shell
|
||||
brew tap dart-lang/dart
|
||||
brew install dart
|
||||
#+END_SRC
|
||||
+ *On NixOS*:
|
||||
#+BEGIN_SRC shell
|
||||
nix-env -iA nixpkgs.dart
|
||||
#+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
|
||||
+ 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 [[https://wiki.archlinux.org/index.php/Android][Arch Linux wiki has a great guide on this here.]]
|
||||
** Flutter mobile development on desktop
|
||||
[[https://github.com/go-flutter-desktop/go-flutter][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).
|
||||
64
.config/emacs/modules/lang/dart/config.el
Normal file
64
.config/emacs/modules/lang/dart/config.el
Normal file
@@ -0,0 +1,64 @@
|
||||
;;; lang/dart/config.el -*- lexical-binding: t; -*-
|
||||
|
||||
(use-package! dart-mode
|
||||
:when (featurep! +lsp)
|
||||
:hook (dart-mode-local-vars . lsp!)
|
||||
:config
|
||||
(set-ligatures! '(dart-mode)
|
||||
;; Functional
|
||||
:def "Function"
|
||||
:lambda "() =>"
|
||||
;; Types
|
||||
:null "null"
|
||||
:true "true" :false "false"
|
||||
:int "int" :float "double"
|
||||
:str "String"
|
||||
:bool "bool"
|
||||
:list "List"
|
||||
;; Flow
|
||||
:not "!"
|
||||
:in "in"
|
||||
:and "&&" :or "||"
|
||||
:for "for"
|
||||
:return "return"
|
||||
;; Other
|
||||
:yield "yield"))
|
||||
|
||||
|
||||
(use-package! flutter
|
||||
:when (featurep! +flutter)
|
||||
:defer t
|
||||
:init
|
||||
(map! :after dart-mode
|
||||
:map dart-mode-map
|
||||
:localleader
|
||||
"r" #'flutter-run-or-hot-reload))
|
||||
|
||||
|
||||
(use-package! lsp-dart
|
||||
:when (featurep! +lsp)
|
||||
:defer t
|
||||
:config
|
||||
(map! :map dart-mode-map
|
||||
(:localleader
|
||||
(:prefix ("t" . "test")
|
||||
"t" #'lsp-dart-run-test-at-point
|
||||
"a" #'lsp-dart-run-all-tests
|
||||
"f" #'lsp-dart-run-test-file
|
||||
"l" #'lsp-dart-run-last-test
|
||||
"v" #'lsp-dart-visit-last-test))))
|
||||
|
||||
|
||||
(use-package! hover
|
||||
:when (featurep! +flutter)
|
||||
:defer t
|
||||
:config
|
||||
(map! :map dart-mode-map
|
||||
(:localleader
|
||||
(:prefix ("h" . "hover")
|
||||
"c" #'hover-clear-buffer
|
||||
"r" #'hover-run-or-hot-reload
|
||||
"R" #'hover-run-or-hot-restart
|
||||
"p" #'hover-take-screenshot
|
||||
"k" #'hover-kill)))
|
||||
(set-popup-rule! "\\*Hover\\*" :quit nil))
|
||||
8
.config/emacs/modules/lang/dart/doctor.el
Normal file
8
.config/emacs/modules/lang/dart/doctor.el
Normal file
@@ -0,0 +1,8 @@
|
||||
;;; 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."))
|
||||
11
.config/emacs/modules/lang/dart/packages.el
Normal file
11
.config/emacs/modules/lang/dart/packages.el
Normal file
@@ -0,0 +1,11 @@
|
||||
;; -*- no-byte-compile: t; -*-
|
||||
;;; lang/dart/packages.el
|
||||
|
||||
(package! dart-mode :pin "3bac14200f9f8f8fcebc383087572da5c3823c34")
|
||||
|
||||
(when (featurep! +lsp)
|
||||
(package! lsp-dart :pin "64fb5d93038483abab59751200749ad81698a845"))
|
||||
|
||||
(when (featurep! +flutter)
|
||||
(package! flutter :pin "81c524a43c46f4949ccde3b57e2a6ea359f712f4")
|
||||
(package! hover :pin "d0f03552c30e31193d3dcce7e927ce24b207cbf6"))
|
||||
Reference in New Issue
Block a user