GitHub - Malabarba/speed-of-thought-lisp: Write elisp at the speed of thought. E...
source link: https://github.com/Malabarba/speed-of-thought-lisp
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
speed-of-thought-lisp
Write emacs-lisp at the speed of thought.
This defines a new global minor-mode speed-of-thought-mode
, which
activates locally on any supported buffer. Currently, only
emacs-lisp-mode
buffers are supported.
The mode is quite simple, and is composed of two parts:
Abbrevs
A large number of abbrevs which expand function initials to their name. A few examples:
wcb
->with-current-buffer
i
->insert
r
->require '
a
->and
However, these are defined in a way such that they ONLY expand in a
place where you would use a function, so hitting SPC after (r
expands to (require '
, but hitting SPC after (delete-region r
will
NOT expand the r
, because that's obviously not a function.
Furthermore, #'r
will expand to #'require
(note how it omits that
extra quote, since it would be useless here).
Commands
It also defines four commands, which really fit into this "follow the thought-flow" way of writing. The bindings are as follows, I understand these don't fully adhere to conventions, and I'd appreciate suggestions on better bindings.
M-RET
:: Break line, and insert "()" with point in the middle.C-RET
:: Do `forward-up-list', then do M-RET.
Hitting RET followed by a `(' was one of the most common key sequences for me while writing elisp, so giving it a quick-to-hit key was a significant improvement.
C-c f
:: Find function under point. If it is not defined, create a definition for it below the current function and leave point inside.C-c v
:: Same, but for variable.
With these commands, you just write your code as you think of it. Once
you hit a "stop-point" of sorts in your thought flow, you hit C-c f/v
on any undefined functions/variables, write their definitions, and hit
C-u C-SPC
to go back to the main function.
Small Example
With the above (assuming you use something like paredit or electric-pair-mode), if you write:
( w t b M-RET i SPC text
You get
(with-temp-buffer (insert text))
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK