spacemacs
spacemacs copied to clipboard
Add natural languages layer
I think Spacemacs can benefit from a prose layer
It should Include something like spell check (we have it), grammar check, punctuation, sentence navigation/manipulation, translation, synonyms search etc. Looks like Emacs has it all [1], [2], [3], [4], [5]. We can organize the packages in one clear layer. But how to manage it? It's not like it should be enabled each time someone views txt, org, md, files. Might be wrap it in a "prose" minor mode?
Any suggestions? What should be in the layer. How to approach it ?
Somehow related: #5403
@StreakyCobra And somehow I even commented there.
The table layout is broken on GitHub. Probably because it has a gap - | should be --|
Then :alien: come and wiped my mind. :smile:
@JAremko - I think we should continue to use this issue as the overall discussion for a prose layer. Any single PR would only be a piece of it.
I left from documentation of current issues with proselint-flycheck here: https://github.com/mkcode/spacemacs/blob/95539151fd5c3f289f47aa94b1ff02c3306df89e/layers/prose/README.org#current-issues.
Any suggestions? What should be in the layer. How to approach it ?
There are so many different ways to go with a general prose mode, like you showed with the 5 links in the top post. We should check out https://github.com/bnbeckwith/writegood-mode and https://github.com/sachac/artbollocks-mode. My choice of what to do next would be to fix the flyicheck-next issue (described in readme) so we run proselint at the same time as other flycheckers and then therefore I can leave it running all the time.
Also, I'm certain that I would like the prose layer to be developed in a way where we could use it in any text or prog modes. Whatever feedback I want for writing, I would like everywhere, including in my long form code comments.
Btw - Most likely I will not be able to contribute the amount of time required to make this really nice so please, anyone else can pick this up.
WIP wishlist. I think we can put most of it behind SPC x
(text) and SPC t
(toggle)
- wordsmith-mode highlight nouns, verbs.
- babel provides an Emacs interface to different translation services available on the Internet. - google translate doesn't work sometimes, should be more reliable + more choice.
- dictcc translation with helm interface. I'll compare it with babel and see if it has big decent amount of non-overlapping features.
- helm-flyspell Helm extension for correcting words with Flyspell.
- langtool based on http://www.languagetool.org/ - will check it out.
- synosaurus Synosaurus is a thesaurus fontend for Emacs with pluggable backends.
- helm-dictionary look up words in local (offline) dictionaries. It also provides short-cuts for various online dictionaries.
- define-word lets you see the definition of a word or a phrase at point, powered by http://wordnik.com/
- typo insert typographically useful unicode characters.
Also hookup company-ispell and mb look at ac-ispell
And the layers documentation probably should have references for other really useful stuff that Spacemacs provides like org-mode. avy for buffer and window navigation.
Not sure if all this stuff should go into a single layer.
@JAremko - Great brainstorming! All of this would be awesome.
When I think about how I would want to use it, I think I would prefer turning everything on or off on one toggle and having config variable for the individual components. Almost as if it were a text proofing (vim-ish) mode. I don't think I would want have each piece on an individual key toggle.
Yay? Nay?
Yay! But most of the tools do not need to be toggled on/off.
- I think
wordsmith-mode
should be used as a separate "debugging" tool for prose. - Looks like
dictcc
overlaps too much withbabel
we can go withbabel
and see if we need something else down the road. Also I'm not sure why we havegoogle-translate
in the+distribution
@syl20bnr can we remove it in favor of havingbabel
in thenatural languages
layer? Or might be replace it withbabel
in+distribution
It looks likegoogle-translates.el
exploits translate.google.com in the unintended way so it often breaks. Ifbabel
works well we will have more back-ends so it should be more reliable in a long run. -
langtool
Haven't tested it yet but looks exciting. -
synosaurus
,typo
,helm-dictionary
,define-word
don't need to be toggled.helm-dictionary
anddefine-word
might overlap so we can start withhelm-dictionary
only. -
company-ispell
andac-ispell
need be toggleable, or at least deasablable in configs. Many people find stuff like this annoying :smile:
Btw I think we should take auto-completion
layer as a guideline - it's a Spacemacs'es way to hook up stuff to different modes. We can do the same with flycheck-proselint
and similar stuff. But it will take some engineering. Relevant discussing. Also need @syl20bnr feedback :confused:
Spacemacs has flyspell-correct
so helm-flyspell
isn't needed.
But most of the tools do not need to be toggled on/off.
Sweet! Even better
google-translate in the +distribution
Great idea with moving that. I'm sure our wonderful overlord @syl20bnr will appreciate that organization.
Btw I think we should take auto-completion layer as a guideline
Good call. 👍
I'm all for a prose
layer which will replace the spacemacs-language
layer included in the distribution.
Mmmmmh looks to me that we can consider prose
to be like a programming language, so:
-
company-ispell
is enabled by adding theauto-completion
layer. -
flycheck-proselint
is enabled by adding thesyntax-checking
layer.
@syl20bnr Thanks! Should we keep Natural languages
name or rename it back to prose
? I'm thinking, what if we'll want to add something to write poems about Spacemacs ? :smile:
The typography layer packages can also be considered for moving to this one.
@TheBB Thanks! Didn't know we have that and that it has typo
Let's brainstorm TODO:
- [ ] Merge
typography layer
toNatural languages
layer. - [ ] Add new tools to it and merge stuff from
spacemacs-language
. - [ ] Add
company-ispell
to the layer (andac-ispell
?) and turn it on ifauto-completion
layer is used and removeac-ispell
from auto-completion layer - [ ] Add
flycheck-proselint
to the layer and use it ifsyntax-checking
layer if used. - [x] ...
- [ ] Kudos!
updated TODO draft.
@JAremko I like prose
because it is short and only one word.
Ok I'll rename it and do some of the stuff in the list 2day.
...
task done !
@mkcode I was thinking how to better organize the layer so it will be maximally extensible.
What do you think about this ? https://github.com/JAremko/spacemacs-pr/commit/8abdda3c51c30974cef2a4f4b9f3b0e5ea7084ef
Removed typographic layer and moved its packages to the layer https://github.com/JAremko/spacemacs-pr/commit/027fff59aea9173b5616ad57c2f379e20c8de56e Will need to work on documentation.
Added new packages (WIP) https://github.com/JAremko/spacemacs-pr/commit/4b65fd478b4b0484af8ac47bdf0cb388a8ddc621 spacemacs-language
layer has define-word
(will be easy to move) and google-translate
(we probably can drop it in favor of babel) also it's a lot of code to be moved/removed.
Haven't tested it yet. But should work, in theory. Also not sure what modes should have individual toggles. And if they don't need them we probably should remove their lighters.
also https://www.emacswiki.org/emacs/BookmarkPlus might be really nice to integrate with all of this. At least mention it in the documentation.
I don't understand why Bookmarks+ should be part of this layer ?
Maybe I'm not understanding well the purpose of Bookmarks+ or the purpose of this layer, but I don't see the relation.
@deb0ch I think the ability to mark your text, visualize and manage marks is a pretty useful feature for a writer.
But It might be not a part of this layer but at least mentioned in the workflow section (We need it for this layer I think)
Isn't it also for regular code ?
Isn't it also for regular code ?
For now I'm pretty much throwing all the potentially related stuff here then (We kinda waiting for flycheck/flycheck#939 I think) we can decide what goes where :smile:
Btw https://www.gnu.org/software/emacs-muse/ and https://github.com/rnkn/fountain-mode/
Anyway it will be really hard to organize all this. Simply thinking about it makes me procrastinate...
Seeing as the flycheck PR for proselint has been open for about a year, maybe in the interim that checker could just be enabled manually?
I see nothing in Spacemacs that I want more than this layer. One question and one suggestion.
Suggestion first: if this layer ever happens to be born, consider this package: http://oremacs.com/2015/05/22/define-word/
Question: is it currently possible to at least use proselint with current version of Spacemacs (for latex files)?
This would be awesome!
The proselint flycheck was accepted in flycheck in sept 2017, if one wants to have proselint on some mode on spacemacs, it's just a matter of enabling in whatever modes you want:
;; enable proselint in textual modes:
(add-hook 'markdown-mode-hook #'flycheck-mode)
(add-hook 'text-mode-hook #'flycheck-mode)
(add-hook 'message-mode-hook #'flycheck-mode)
This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Please let us know if this issue is still valid!
Hey first time I've done something good by necroing. Before I used Spacemacs I loved using Textlint to hammer down ideal text. I would love this or a similar feature.
@travisbhartwell there is https://www.macs.hw.ac.uk/~rs46/posts/2018-12-29-textlint-flycheck.html :thinking: