You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Refine is great for editing large lists, such as hooks. In the above
example, I insert and edit values in prog-mode-hook.
Refine is also a valuable debugging tool. In this example, I reorder
items in the kill-ring so I paste the value I want.
Limitations
Refine deliberately modifies values in place. This is useful if
you're working with a list that's shared between multiple variables,
such as font-lock-defaults.
In some cases, this isn't possible (e.g. inserting into an empty
list). In these cases, refine will overwrite your variable.
Keybindings
Editing:
command
binding
refine-edit
e or RET
refine-cycle
c
refine-insert
i
refine-insert-after
a
refine-delete
k
refine-move-forward
s or <M-up>
refine-move-backward
w or <M-down>
Moving around:
command
binding
refine-next
n
refine-previous
p
Buffer commands:
command
binding
refine-update
g
kill-this-buffer
q
Installation
Install from MELPA (recommended), or add refine.el to load-path.
Tests
You can run tests inside Emacs by just opening the test files and
doing M-x eval-bufferM-x ert RET t RET.
Alternatively, you can run the test from a shell:
$ cask install
$ cask exec ert-runner
Note that refine has had infinite loop bugs during development, so you
may need to press Ctrl-C if tests don't terminate.
Related projects
counsel-set-variable (part of
ivy) is also an excellent way of
editing variables in Emacs.
edit-list provides list
editing in a very similar style to refine. It doesn't edit in-place,
nor work as well for hooks, but does provide an elegant, Emacsy UI.