We already have a question about tools useful specifically for testing, but what about actually writing the code? Which packages do you find speed up your development? Which aids do you use to quickly and easily navigate and understand your projects?
1 Answer
Authoring
edebug
: Step-by-step debugging of Elisp code.checkdoc
: Learn about style errors in your comments and docs.elint
: Linter for Emacs Lisp.paredit
: Manipulate lisp code as trees instead of lines. Never have unbalanced parentheses.lispy
: vi-like alternative / superset ofparedit
. Additionally includes shortcuts for outlines, narrowing, edebug, ediff, semantic, ace-jump-mode, multiple-cursors, cider, slime and geiser.multiple-cursors
: Simultaneously edit multiple similar expressions. Amognst other things, useful for code refactoring.erefactor
: Code refactoring.redshank
: Another refactoring library (designed for Common Lisp, but works well with Emacs Lisp).macrostep
: Interactive in-buffer macro expansion.yasnippet
: Code snippets for quick expansion of repetitive idioms (examples here)
Navigation
speedbar
: The speedbar is a great way to navigate through your project. It recognizes 'tags' asdefun
s anddefvar
s (and the like) and provides visible bookmarks as an outline.outlined-elisp-mode
: A collection of settings for theoutline
minor mode for Elisp buffers.elisp-slime-nav
: Instant jumping to function and variable definitions withM-.
.
Profiling
elp
: Interactive frontend for the Emacs Lisp Profiler, useful for exploring what exactly is slow in your profiled function and how it interacts with the rest of Emacs.
Management
names
: Provides a macro to create namespaces
Version control
Git
and its Emacs front-endMagit
: arguably the best version control system and a very well-thought Emacs front-end for it.
Misc
ielm
: interactive REPL
-
1Please extend on this list with your favorite tools if you believe they are widely helpful. Commented Nov 1, 2014 at 4:49
-
1
multiple-cursors
, someone else might prefervisual-regexp
or ag/ack/grep from command line or from within emacs or emacs inbuiltquery-replace
orquery-replace-regexp
or something else. Similar arguments can be made for each package. Instead a good question would be asking how to do something specific in "package development".multiple-cursors
, for example, is useful everywhere, but perhaps there are other packages that respect lisp's explicit scoping. Surelymacrostep
andielm
aren't applicable anywhere else. Bring this up on meta, maybe?ido
,helm
,ibuffer
,tabbar
—I don't think—would be appropriate entries. There's nothing that really makes elisp development easier. They're surely fantastic packages, but (in my experience) they don't have anything to add to elisp development.etags
—while I'm not familiar with it, sounds like it would be appropriate. Perhaps another CW is appropriate for these other packages (because they really do deserve mention), but I fear that your fears for this question would surely be realized in that one.