[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[nongnu] elpa/haskell-tng-mode 01789b1 075/385: y u no haskell-mode?
From: |
ELPA Syncer |
Subject: |
[nongnu] elpa/haskell-tng-mode 01789b1 075/385: y u no haskell-mode? |
Date: |
Tue, 5 Oct 2021 23:59:04 -0400 (EDT) |
branch: elpa/haskell-tng-mode
commit 01789b1a9d93f47c725e6270b737304e88e078c6
Author: Tseen She <ts33n.sh3@gmail.com>
Commit: Tseen She <ts33n.sh3@gmail.com>
y u no haskell-mode?
---
README.md | 20 ++++++++++++++------
1 file changed, 14 insertions(+), 6 deletions(-)
diff --git a/README.md b/README.md
index f69477d..fb211a4 100644
--- a/README.md
+++ b/README.md
@@ -4,17 +4,25 @@ This is an exploratory alternative to
[`haskell-mode`](https://github.com/haskel
## Why?
-`haskell-mode` is almost 30 years old and has accumulated more than 25,000
lines of code. It's too much to handle.
+In [Lessons from 6 Software
Rewrites](https://medium.com/@herbcaudill/lessons-from-6-software-rewrite-stories-635e4c8f7c22),
the author concludes *avoid rewrites and make incremental improvements
instead, unless you want to a) remove functionality or b) take a different
approach*.
-Meanwhile, the GNU Emacs ecosystem has evolved to provide many features that
`haskell-mode` independently implemented, such as
[`projectile`](https://github.com/bbatsov/projectile),
[`comint`](https://masteringemacs.org/article/comint-writing-command-interpreter),
[`highlight-symbol`](https://melpa.org/##/highlight-symbol),
[`pretty-symbols`](https://github.com/drothlis/pretty-symbols),
[`company`](http://company-mode.github.io),
[`yasnippet`](http://joaotavora.github.io/yasnippet/), [`p [...]
+### Remove Functionality
-## Approach
+`haskell-mode` is almost 30 years old and has accumulated more than 25,000
lines of code aimed at a wide variety of users from academics to industrial
software engineers. We choose to focus on the requirements of the industrial
engineer, removing features that are deeply embedded in the design of the
original codebase.
+
+### Different Approach
+
+During those past 30 years, the GNU Emacs ecosystem has evolved to provide
many features that `haskell-mode` independently implemented, such as
[`projectile`](https://github.com/bbatsov/projectile),
[`comint`](https://masteringemacs.org/article/comint-writing-command-interpreter),
[`highlight-symbol`](https://melpa.org/##/highlight-symbol),
[`pretty-symbols`](https://github.com/drothlis/pretty-symbols),
[`company`](http://company-mode.github.io),
[`yasnippet`](http://joaotavora.github.io [...]
+
+We choose to use idiomatic libraries to provide features, rather than building
ground-up solutions.
+
+## Goal
The goal of this friendly rewrite is to produce software that any Haskell
developer can use, understand and build upon ([Emacs
Lisp](https://www.gnu.org/software/emacs/manual/elisp.html) is fun to learn).
This can be achieved by preferring a simple and small codebase targeting
[Haskell2010](https://www.haskell.org/onlinereport/haskell2010/), with
automated tests for every feature.
-Old versions of `ghc` and extensions to the Haskell language may not be
supported, to reduce the complexity of the codebase. For example, [literate
Haskell](https://wiki.haskell.org/Literate_programming) will not be supported,
and `ghc` language extensions must be justified on a per-case basis.
+Old versions of `ghc` and extensions to the Haskell language may not be
supported, to reduce the complexity of the codebase. For example, [literate
Haskell](https://wiki.haskell.org/Literate_programming) will not be supported,
and `ghc` language extensions must be justified on a per-case basis. We are
sympathetic to language extensions that are popular in the free software and
commercial ecosystems.
If it is possible to implement a feature using another minor mode, or command
line tool, then we would prefer not to accept the feature.
@@ -22,7 +30,7 @@ If it is possible to implement a feature using another minor
mode, or command li
Bug reports and feature requests are a source of anxiety for maintainers, and
encourage an unhealthy customer / supplier relationship between users and
contributors.
-Instead, and following the [anarchical spirit of
Haskell](https://www.microsoft.com/en-us/research/wp-content/uploads/2016/07/history.pdf),
we encourage discussions and debate around code contributions. Merge requests
can be raised by anybody and discussed by anybody, and do not need to be
complete. A failing automated test is the only way to report a bug. If the
maintainers are convinced by the technical merit and quality of a proposal,
they may accept it.
+Instead, and following the [anarchical spirit of
Haskell](https://www.microsoft.com/en-us/research/wp-content/uploads/2016/07/history.pdf),
we encourage discussions and debate around code contributions. Merge requests
can be raised by anybody and discussed by anybody, and do not need to be
complete. An automated test is the only way to report a bug. If the maintainers
are convinced by the technical merit and quality of a proposal, they may accept
it.
## Install
@@ -42,7 +50,7 @@ This is the status of core features:
- Navigation:
- [x] performance-minded `syntax-table`
- [x] `font-lock` to visually distinguish types and values
- - [ ] `sexp` navigation (SMIE)
+ - [ ] `sexp` navigation (SMIE) **IN PROGRESS**
- [ ] `projectile` / [`fast-tags`](https://github.com/elaforge/fast-tags)
integration for `TAGS`
- [ ] hoogle CLI jump-to-source
- [ ] `imenu` population
- [nongnu] elpa/haskell-tng-mode 4d6bbfc 050/385: feedback from Stefan, improving lexing, (continued)
- [nongnu] elpa/haskell-tng-mode 4d6bbfc 050/385: feedback from Stefan, improving lexing, ELPA Syncer, 2021/10/06
- [nongnu] elpa/haskell-tng-mode 96609e4 052/385: thoughts on layout inference, ELPA Syncer, 2021/10/06
- [nongnu] elpa/haskell-tng-mode 06b357c 054/385: hacky closing braces, ELPA Syncer, 2021/10/06
- [nongnu] elpa/haskell-tng-mode 64ad4a8 057/385: refactored to centralise state, ELPA Syncer, 2021/10/06
- [nongnu] elpa/haskell-tng-mode 0ac5a2f 059/385: copyright years and move the test assertions, ELPA Syncer, 2021/10/06
- [nongnu] elpa/haskell-tng-mode a6bb27e 061/385: [ci skip] layout algorithm implemented and tested, ELPA Syncer, 2021/10/06
- [nongnu] elpa/haskell-tng-mode 7d2863e 065/385: tests for SMIE state invalidation, ELPA Syncer, 2021/10/06
- [nongnu] elpa/haskell-tng-mode 41a29dd 066/385: backward lexer, ELPA Syncer, 2021/10/06
- [nongnu] elpa/haskell-tng-mode c48e7a5 069/385: starting to transcribe the expression table, ELPA Syncer, 2021/10/06
- [nongnu] elpa/haskell-tng-mode 1f1110a 073/385: transcribe the grammar rules, ELPA Syncer, 2021/10/06
- [nongnu] elpa/haskell-tng-mode 01789b1 075/385: y u no haskell-mode?,
ELPA Syncer <=
- [nongnu] elpa/haskell-tng-mode b8f3e3f 079/385: back out incomplete grammar rules, ELPA Syncer, 2021/10/06
- [nongnu] elpa/haskell-tng-mode 9e19b2b 080/385: double down on simpler grammar, ELPA Syncer, 2021/10/06
- [nongnu] elpa/haskell-tng-mode 6e7a24f 083/385: lexer identifies conid / varid, ELPA Syncer, 2021/10/06
- [nongnu] elpa/haskell-tng-mode b12e49a 086/385: consym, ELPA Syncer, 2021/10/06
- [nongnu] elpa/haskell-tng-mode 7d6fa3d 091/385: thoughts on lexers, ELPA Syncer, 2021/10/06
- [nongnu] elpa/haskell-tng-mode 6a05d12 090/385: planning for indentation, ELPA Syncer, 2021/10/06
- [nongnu] elpa/haskell-tng-mode 2060f7a 092/385: thoughts on indentation testing, ELPA Syncer, 2021/10/06
- [nongnu] elpa/haskell-tng-mode 6d2d764 094/385: skeleton for indentation tests, ELPA Syncer, 2021/10/06
- [nongnu] elpa/haskell-tng-mode 0d04664 115/385: implement batch compilation, ELPA Syncer, 2021/10/06
- [nongnu] elpa/haskell-tng-mode adb3c50 143/385: better insert indentation suggestions, ELPA Syncer, 2021/10/06