For the past week I’ve been day dreaming about a nice way where Emacs and org-mode users could collaborate in real time, share their configurations, learn from, and teach each other about their workflow. Sure the Internet is a great resource to pull from, it is also nice to interact with people, too!
Imaginations included weekly “Team Emacs” meetings where folks may present on interesting topics, live online. Code reviews may also be performed, even sharing how to implement a desired feature would be great. The real effort would be to organize “Team Emacs”, and do all of the logistical work. There is of course plenty of work to do for the presenters. What about the attendees? Surely, the work load may be distributed. That said, there is something in the collective consciousness right now. Sacha just posted on one step forward; Bastien!
Bastien is a delightful person online and an excellent leader. Starting an Emacs consultancy is a wonderful idea. The value of your time is priceless, so reflect that in your offering :).
Tag: Programming
Distinguishing Models
It is important to distinguish between the mathematical numbers, the Scheme objects that attempt to model them, the machine representations used to implement the numbers, and notations used to write numbers.
– R6RS Chapter 3
A lightweight philosophy for an Emacs keymap
Any approach for your desired keymap in Emacs is possible. My current philosophy under development is to keep things as close to “stock” as possible. The idea is that I won’t run into many collisions, and bindings will be generally documented quite well, and that is less work for me. What is my plan?
First, it is really simple. The F keys are nice to use, but far away, and the first handful are bound anyway. Looking at 1…0 though, are those really critical? Well that depends. Unless you pass numeric to functions to functions a lot, then feel free to rebind them. That brings 10 keys to be bound that are quite comfortable to use being so easy to reach, that is a very easy fix.
Second, I overload bindings whenever possible. org-mode C-c C-c binding is really delightful. There are a bunch of situations where given the context, hitting C-c C-c, 80% of the time will do “the right thing” for that situation. It is really pleasant to use. My version is pretty basic actually. The thing is that I like the VC bindings in Emacs even if they only operate on one file at a time, I love the workflow.
As such, I’m calling vc-next-action and log-edit done a lot of times every day. In the spirit of “saving keystrokes” and “micro-optimizations” it kind of jumped out at me that I’m wasting some time constantly hitting C-x s to save the buffer (despite having real-auto-save running quite aggressively), C-x vv to initiate the commit, fill the log message, and C-c C-c to finalize the commit. Well, that doesn’t sound like much, but trust me it is!
My override was to first find the easiest number key for me to reach with my right hand, that is 9, and bind C-9 to vc-next action. Adding some advice to vc-next-action, save-buffer is called so that doesn’t require a keystroke. After filling out the buffer, log-edit is bound to to C-9 but only in log edit mode. In that case, defadvice and C-9 make it a little simpler and so much faster. My tentative goal is to make C-9 “just do the right thing” in most situations, we’ll see where that goes.
Those are my two beliefs right now… any more lightweight and it wouldn’t even exist.
Lightweight multiple modes for semi-literate programming
Sometimes you don’t want a 100% reproducible system (org-mode, noweb, polymode) and instead just want an easy way to work with multiple languages within the same document (MuMaMo). Sometimes you don’t even want to go that far though and just want a really easy way to hack on different languages that have somehow ended up in the same file.
Jon posted the link here to Zane’s solution. Very cool. Nice reminder that if we were to read the Emacs and Emacs Lisp user manual, we would all know how to do this. Another nice reminder, even if we don’t, kind people provide the information and solutions for us, the very definition of community. I wanted a slightly different approach with just a couple additional things: line numbers instead of the point, safety checks for use via code, and a little more documentation:
Continue reading “Lightweight multiple modes for semi-literate programming”
God Mode — no more RSI
Lot of posts recently about the desire to reduce RSI from too much keyboard use in Emacs. Although I didn’t look up any studies or evidence of this, the idea of hacking how to handle keybindings in Emacs is always interesting.
God mode is one way to “simplify” things.
Basically you go in and out of the mode, and when in it, single key strokes are automatically prefaced with a control, and meta commands are prefaced with a g instead.
MELPA Stable
Bozhidar posted about a MELPA based repository for stable packages builds (tags), MELPA-stable. Nice option and still not sure how to selectively pull projects from both stable and unstable given that the former only has 556 packages versus the richer 1796 of the latter.
GNU Emacs Manuals Online
Such a short page which encompasses direction to massive tomes of wisdom.
Time and care should be taken reading them.
An Emacs FFI proof of concept
Fun read here.
Very much a nice to have despite no specific need.
Avoiding window takeover in Emacs
A modern lisp API for Emacs Lisp with dash.el
dash.el gives you everything you would expect, and more.