Using Plover with emacs

267 views
Skip to first unread message

Jim Ladd

unread,
Jan 30, 2021, 12:50:12 AM1/30/21
to plove...@googlegroups.com
Hi all!

This is my first email to the group using steno : )

It's probably a long ways off, but I'm interested in using emacs with steno full-time some day. I was wondering if there was anyone out there that was currently doing just that, and if so what their experience has been like. Here are some more specific questions that come to mind:

1) In what ways have you modified your dictionary to use emacs?
2) What version of emacs are you using? (after doing some digging, I'm interested in going with spacemacs)
3) Are there any parts of emacs that have felt especially easy or hard?
4) What kinds of things do you use emacs for? I would be happy using emacs just for regular writing or note taking to get started with, but later on would want to do coding (with python)

Thanks in advance for any thoughts or tips!

Best,

Jim

Glen Warner

unread,
Jan 30, 2021, 6:15:17 AM1/30/21
to Plover
Hi, Jim.

I have never used Emacs so this probably won't help you very much, but I would recommend that you create a dictionary specifically for those types of outlines. That way, upgrading to a new version of Plover won't replace the built-in Plover dictionary and eat (technical term) all of your Emacs-related outlines.

Also, one thing you might consider would be placing your dictionaries in a folder in an appropriately named folder in DropBox, Google Drive, iCloud, or whatever you have on your system. That way, you will always have your dictionaries available -- even if you're offline (assuming, of course, the online backup/storage system you're using doesn't have to be online to actually work).

That said, perhaps Mirabai Knight or Ted Morin will have an Emacs specific pointer or two for you. Good luck!

--gdw
      

jo...@qualdan.com

unread,
Jan 30, 2021, 7:08:05 AM1/30/21
to Plover
I haven't used Emacs in a loong time, but from my memories of it, and my experience with Vim, I'd say the place to start is with a fairly complete key-combo dictionary, plus alternate alphabets (upper- and lowercase) that don't have any space around them. That way you *can* hit anything you need to (e.g. C-k x). I've found my single-stroke navigation/combos dictionary to be convenient enough that I might not even go any farther than that (https://gist.github.com/JoshuaGrams/4847241da6a5678f7ee11ffccb79d583). But if you have common actions that are a bunch of strokes, you could build dictionary entries for those as you need them.

--Josh

Jim Ladd

unread,
Feb 3, 2021, 2:02:14 AM2/3/21
to plove...@googlegroups.com
Thanks all for the suggestions!

> I'd say the place to start is with a fairly complete key-combo dictionary, plus alternate alphabets (upper- and lowercase) that don't have any space around them.

This is pretty much where I'm at today, and I agree, if this is where I end up, it feels really doable.

> I would recommend that you create a dictionary specifically for those types of outlines.

Totally agree - I have several different dictionaries, all of which git pushed to a repo on Github.

--
You received this message because you are subscribed to the Google Groups "Plover" group.
To unsubscribe from this group and stop receiving emails from it, send an email to ploversteno...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/ploversteno/4931b06b-6b67-45b0-af29-6bf4d01d926an%40googlegroups.com.

Quaverly

unread,
Feb 3, 2021, 4:50:12 AM2/3/21
to plove...@googlegroups.com
Great steno writing, Jim!  Looks beautiful.  Good luck with your e-mac quest.

Also, the famous Glen Warner is on our list server?!  I must meet this man.

Quaverly 


Peter Dowling

unread,
Feb 3, 2021, 10:45:48 AM2/3/21
to Plover
I dabbled with using Emacs for a little while with Plover, but I'm not experienced at Emacs so I put it aside for now.

I would say it worked pretty well, but I had a spend a good chunk of time getting dictionary entries to send the shortcut keys.  I also found some things to be a bit quirky.  For example (and I forget what it is called) but you know when you get prompted to confirm a command like with a yes/no?  I sometimes found that worked oddly, like it wouldn't accept the normal stroke for the word "yes".  I vaguely recall having to define a "yes" (or perhaps just "y") answer as a separate stroke using the same syntax normally used in Plover for sending keyboard presses.  It was awhile ago so I forget if that was it exactly, but my point is there were some quirks, but nothing that you couldn't get around if you were really dedicated to using Emacs.

Now on the plus side, the whole "I don't like emacs because all the Ctrl key shortcuts are 'too hard' to press" - that whole thing goes away!  With plover you can make all of those normal steno strokes.

I'll probably try it again at some point.  But my current works requires using MS Word which is why I abandoned my Emacs experiments for now.

Best of luck.

Glen Warner

unread,
Feb 4, 2021, 1:07:22 AM2/4/21
to Plover
Aww, Quaverly ...! You're makin' me blush over here!

... but you can find me in the Facebook Plover group, so there's that.

--gdw  

Quaverly H. Rothenberg

unread,
Feb 4, 2021, 2:16:15 AM2/4/21
to plove...@googlegroups.com
Didn't know we had one.  See you there!

Quaverly H. Rothenberg, ACT
Q & A Transcripts
22 Graves Ave.
Northampton, MA 01060-3204


Jim Ladd

unread,
Feb 5, 2021, 12:09:54 AM2/5/21
to plove...@googlegroups.com
> I also found some things to be a bit quirky.  For example (and I forget what it is called) but you know when you get prompted to confirm a command like with a yes/no?  I sometimes found that worked oddly, like it wouldn't accept the normal stroke for the word "yes".

I've run into this a bunch, though I can't remember where it came up. I think maybe when I was trying to get tmux to work. I had to be super careful about whether I was entering something that was going to insert a space or not. Yep, this sounds very familiar.

--
You received this message because you are subscribed to the Google Groups "Plover" group.
To unsubscribe from this group and stop receiving emails from it, send an email to ploversteno...@googlegroups.com.

Robert Fontaine

unread,
Feb 5, 2021, 9:54:09 AM2/5/21
to plove...@googlegroups.com
A masochist after my own heart.
emacs plus steno.
The number of times that I have started and abandoned this project are beyond count.

I salute you.



--
Thank you,

Robert Fontaine
204 293 6253

Jim Ladd

unread,
Feb 5, 2021, 2:05:27 PM2/5/21
to plove...@googlegroups.com
Robert, I loved your email. It honestly feels like a relief to know that I'm not the only one out there chasing this kind of thing. I've been duking it out with emacs all week and man has it been rough (spacemacs has been way better, but it's still an adjustment).

Reading what you wrote though - and honestly feeling understood - made me stop and think -- why do I do this kind of thing? For a while now, I've felt like there's this "thing" that gets me involved in all kinds of projects that has gone unnamed for a long time. But I think I have a better idea of what's going on.

I like interesting puzzles that have depth and beauty, where there kind of isn't a "done" but instead a long journey, where each time you sit down with the problem you get to deepen your understanding, love, and appreciation for the evolving complexity of the thing you're looking at. I'm waxing poetic here, but I definitely think that passion is a part of this. I was amazed and delighted when my wife pointed out that amateur literally means someone following a pursuit "for the love of it". Those descriptions feel more true than how I've thought about this in the past -- just doing things the hard way -- and I can see how that shows up in the things I'm chasing:

* I love the game of Go because every game is different and the dynamics that play out each game are interesting.. I love exploring broader ideas of preserving balance during the give and take of the game. It feels fascinating.
* I love ham radio because electromagnetics is just pure magic and the fact that we can manipulate it to talk is amazing. I love building a station that can talk directly to another station all the way around the world. It's a deep problem and I love wrestling with it.
* And I love steno because it is a powerful tool, but also a fascinating system of taking words, putting them in a phonetic space, and mapping them to the steno machine. I love coming across a new word that I can't write and discovering what kind of translations Plover (and folks in the community!) have come up with for it. It's a puzzle that keeps expanding.. just like Go .. just like carrier waves and modulation.

That's enough rambling - it felt really helpful to think about this. Robert, thank you for a thoughtful, funny, and kind reply. It has definitely made my day.

Jim


dolors...@gmail.com

unread,
Feb 8, 2021, 9:55:17 AM2/8/21
to Plover
Hi Jim!

This a great question and one that I have as well.  I would probably be considered an Emacs power user; Emacs has been my daily driver for developing Python for several years.  My steno skills are nascent; about halfway through the Typey Type lessons currently.  The limiting factor for me is steno skills, not Emacs (or Emacs Lisp) skills.
 
2) What version of emacs are you using? (after doing some digging, I'm interested in going with spacemacs)

I use GNU Emacs 26.2 and GNU Emacs 27.1 on Windows, Debian, and Termux.  My config is custom. Mirabai has demonstrated that Vim and steno work well together.  Emacs evil-mode is a vim emulation.  Spacemacs is built on evil.  In that sense, spacemacs should work well, theoretically.  I use evil, personally.  My recommendation in to start vanilla and grow your Emacs and your Emacs knowledge organically over time.

3) Are there any parts of emacs that have felt especially easy or hard?

Do you mean Emacs itself or Emacs-Plover integration?  Since this is the Plover mailing list, I'll speak to the latter. 

The challenge with Emacs-Plover integration is the (apparent) lack of modifier key support.  Emacs binds every key to a command (technically, a lisp function).  Commands not bound to a direct key are accessed in one of two ways.  First, through a modifier combo like Ctrl+f (notated as C-f), secondly through an 'interactive' process initiated with Alt+x (notated M-x ('M' for 'meta' (this is because the meta key existed before the alt key and Emacs predates alt))).  Whereas the 'f' key calls the command 'self-insert', printing the letter 'f' to the screen, C-f calls 'forward-char' and moves the cursor right one character.  You can achieve the same result by calling 'forward-char' interactively with M-x forward-char. 

To effectively integrate Emacs and Plover, beyond basic writing, you *must* have modifier keys.  Without modifiers, you're stuck mapping every command to a stroke in the Plover dictionary.  That's impractical and not how Emacs is designed.  Emacs maps keys combinations to commands whereas Plover maps strokes to words.  Trying to implement Emacs commands in the dictionary is mapping strokes to words to commands.  It's not clear to me why Plover doesn't appear to support modifier keys.  (I mean that in the most polite, respectful way toward the community and the developers!)  Is it a technical limitation?  The gemini protocol (which is what a georgi uses), as far as I understand it, is simply a direct text message stating which keys where pressed on the device.  I imagine mapping some stroke to a corresponding modifier across multiple OS systems is...a PITA.  But is it strictly impossible?  I don't know.  Is it a man-power problem?  That is, is it technically possible and not (yet) implemented? 

Matt

On Saturday, January 30, 2021 at 12:50:12 AM UTC-5 jla...@gmail.com wrote:

Robert Fontaine

unread,
Feb 8, 2021, 7:43:13 PM2/8/21
to plove...@googlegroups.com
emacs todolist has driven me to play with it many times but the overall investment that emacs takes to pay back is always more than just using fit for purpose tools.

--
You received this message because you are subscribed to the Google Groups "Plover" group.
To unsubscribe from this group and stop receiving emails from it, send an email to ploversteno...@googlegroups.com.

Jim Ladd

unread,
Feb 14, 2021, 12:33:14 AM2/14/21
to plove...@googlegroups.com, ja...@gboards.ca
That's really cool that you're using emacs for python; I forget whether I mentioned it or not, but that's what I would be using it for too.

As far as emacs versions go, I've been using spacemacs -- again, I forget if that's something I mentioned or not -- and have been noticing how slow it's been recently, and have been told that vanilla spacemacs is a lot faster. I may give that a try sometime soon if I can.

It does seem like emacs would work pretty well with evil mode. I could also see it working pretty well with the default mappings too.

In terms of asking what felt hard, you were right; I was asking about the emacs-Plover integration.

.. and on that point, I agree, I've wondered about the lack of modifier support. For emacs, I think you could use something like this (in fact, thats . is exactly what I use, and it's worked for me pretty well) -- that allows you to hit <modifier> + letter using a single stroke which felt pretty efficient for me).

But that said, there are a bunch of times when I would like to be able to hold a modifier and click on something. But the problem there is -- and I think this may be the technical reason why this is not implemented -- that with the Georgi, it is set up to be in chording mode, and so it doesn't actually send a key press until you release the keys. But that's just it -- I want the modifier to be issued, and sustained, while I hold down the key for the modifier. Not sure if that makes sense or not, and I'm definitely not sure if my technical reasoning is accurate or not here.

Thanks a lot for your thoughtful response!

Jim

Update:I looked through the source for the georgi a bit and I actually don't see anything about a "chording mode", so maybe I'm totally wrong about that. : ) Maybe what I saw was for the faunchpad, which is also chorded.

--

Lorem Ipsum

unread,
Feb 16, 2021, 9:57:00 AM2/16/21
to plove...@googlegroups.com, ja...@gboards.ca
On Sun, Feb 14, 2021 at 12:33 AM Jim Ladd <jla...@gmail.com> wrote:
For emacs, I think you could use something like this (in fact, thats . is exactly what I use, and it's worked for me pretty well) -- that allows you to hit <modifier> + letter using a single stroke which felt pretty efficient for me).

Thank you for this, Jim.  I've been fiddling a little more with an "Emacs Theory" which I've hosted here: https://github.com/excalamus/plover-emacs

I only have rough ideas noted at the moment, but I'm thoroughly happy with the setup.  Plover dictionaries use JSON.  JSON doesn't allow comments.  However, Emacs Org mode provides literate programming functionality though source blocks and "tangling".  We can describe the theory with prose and tangle the JSON source blocks to plover-emacs.json.  To create plover-emacs.json, simply call 'org-bable-tangle'.  This combines all the source blocks that have the ':tangle yes' header.  Moreover, we can publish the annotation and the source blocks to HTML using the export dispatcher via C-c C-e h o.  I have it set to publish to docs/index.html so that GitHub Pages will render it.  If you, or others, want to help develop an "Emacs Theory", we can discuss it here, write up the theory in plover-emacs.org, then publish it to json and html.  If you, or anyone else, wants a more detailed explanation, please let me know.

Thoughts?
 

Jim Ladd

unread,
Feb 21, 2021, 8:29:08 PM2/21/21
to plove...@googlegroups.com, ja...@gboards.ca
While I've used org-mode a bit, I'm still an 'org mode baby', so I'm not following 100%. But it sounds like you basically have found a way to write a self-documenting plover dictionary (or, at least, something that can become a dictionary), which is awesome.

I've bookmarked the repo (thanks for sharing!) and look forward to checking this out when I have bits of time. Don't think I have much to contribute right now, but I'm def. interested in checking out what's here. I think plover and emacs could be really great together.

There's a list of plover / steno dictionaries that I can't find atm - would it be worth going ahead and posting a link to this project to let others know about it? Don't know why I can't find the page right now, grr.

Jim

--
You received this message because you are subscribed to the Google Groups "Plover" group.
To unsubscribe from this group and stop receiving emails from it, send an email to ploversteno...@googlegroups.com.

dolors...@gmail.com

unread,
Feb 22, 2021, 8:09:30 PM2/22/21
to Plover
Correct, using a single source file (plover-emacs.org), it's possible to generate a webpage (https://excalamus.github.io/plover-emacs/) explaining each entry in a Plover dictionary.  If you look at the raw source (https://raw.githubusercontent.com/excalamus/plover-emacs/main/plover-emacs.org), there are blocks marked by

#+begin_src js :tangle plover-emacs.json :exports code
#+end_src

This first says to use Javascript functionality for this section.  "Tangle" is a technical term from literate programming.  It means to take the programming source code which is embedded in a document and extract it into an executable form.  A related term is "weave" which means to generate a human readable text.  The diagram below shows how everything relates:

        +----- ("tangle" with "org-bable-tangle")------>  plover-emacs.json -------->  used with Plover ('executable')
        |
        |
        +---- ("weave" with the Org export system via C-e h o) -----> index.html -----> read with web browser ('human readable')

You can see in the begin_src line the ":tangle" keyword with value "plover-emacs.json".  When you call "org-babel-tangle" (babel is the name of a module within Org that handles programming language related things), a new file named "plover-emacs.json" is created and all blocks with the ":tangle plover-emacs.json" directive are appended to it.  The ":exports code" directive indicates to the export system to only export the code within the block; don't execute it and don't display the result of running it.  Otherwise, it's just Org markup language (=verbatim-text=, * header, [[http://address][links]], etc.) and export directives like #+TITLE.  If it's not clear by comparing plover-emacs.org to index.html, the manual (https://orgmode.org/guide/Markup.html) explains it.

You're under no obligation to contribute (although you've already helped by linkinig Di's modifiers-single-stroke.json dictionary).    As the dictionary gets fleshed out and becomes more robust, I'll probably advertise it more.  You or anyone else is welcome, of course to share it, but I think anyone interested will probably find this thread.  I intend to respond here whenever I make any updates, have breakthroughs, or need help.  

Jim Ladd

unread,
Feb 24, 2021, 1:53:12 AM2/24/21
to plove...@googlegroups.com
Oh what a tangled web we weave,
when steno-ing in emacs 'tis the idea we conceived ; )

This is awesome, thanks for the overview! I'm getting more and more hooked on emacs.

dolors...@gmail.com

unread,
Feb 24, 2021, 8:29:20 AM2/24/21
to Plover
ha-ha, love it

Lorem Ipsum

unread,
Jul 25, 2021, 1:17:26 PM7/25/21
to plove...@googlegroups.com
Jim and friends,

I just pushed a version 1.0 of a dictionary for use with Emacs.  It provides only modifiers for the English alphabet right now.  In order to get a release out, I didn't create definitions for Super or for left-hand patterns.  It plain language, you can do M-x, C-f, etc. but not M-: or Super-a.  Theoretically, everything is explained in the accompaying website.

The "features" are:
  • Explanation of the dictionary design and design process
  • Control modifiers
  • Alt/Meta modifiers
  • Shift modifiers
  • C-S, M-S, C-M-S combinations
  • Escape
  • Function keys
Please feel free to kick the tires.

The roadmap for v2.0 is to incorporate the (brilliant) ideas of EPLHREU so that the dictionary works for symbols as well as English letters.  Seeing as it took nearly 8 months to get this far, expect v2.0 some time around the next United States presidential election ;). 






Jim Ladd

unread,
Jul 27, 2021, 2:53:43 AM7/27/21
to plove...@googlegroups.com
I was _just_ thinking back to this thread.. while writing up a dictionary for LaTeX. 😂

Look forward to checking this out!

Jim

--
You received this message because you are subscribed to the Google Groups "Plover" group.
To unsubscribe from this group and stop receiving emails from it, send an email to ploversteno...@googlegroups.com.
Reply all
Reply to author
Forward
0 new messages