16

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?

closed as primarily opinion-based by Gilles, Luke, nicael, dgtized, Drew Nov 5 '14 at 6:17

Many good questions generate some degree of opinion based on expert experience, but answers to this question will tend to be almost entirely based on opinions, rather than facts, references, or specific expertise. If this question can be reworded to fit the rules in the help center, please edit the question.

  • 3
    This question is very broad and open ended. Many of the packages you listed in your answer can apply to any code development. Also that answer can end up containing a major subset of the packages listed in package manager. If you prefer multiple-cursors, someone else might prefer visual-regexp or ag/ack/grep from command line or from within emacs or emacs inbuilt query-replace or query-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". – Kaushal Modi Nov 1 '14 at 14:11
  • @kaushalmodi It's CW, so it was partly my intention to be open-ended. Asking specific questions might be a better way to go about this, but this question would still exist as a collection of those questions. I tried to aim the question specifically at tools that are helpful with lisps and emacs development—multiple-cursors, for example, is useful everywhere, but perhaps there are other packages that respect lisp's explicit scoping. Surely macrostep and ielm aren't applicable anywhere else. Bring this up on meta, maybe? – Sean Allred Nov 1 '14 at 14:20
  • @kaushalmodi: good points, but isn't this why it's now a community wiki? Presumably we could edit the answer to flag elisp-specific and development-general packages. – Dan Nov 1 '14 at 14:20
  • It's alright to have a community wiki but I think that this can easily transform into "What are your favorite packages?" CW. Let's take the another generic aspect in your answer: Navigation.. Speedbar, projectile, outshine, orgstruct, g/c/etags, neotree, tabbar, ido, helm and helm plugins, ibuffer, etc – Kaushal Modi Nov 1 '14 at 14:26
  • @kaushalmodi 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. – Sean Allred Nov 1 '14 at 14:30
20

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 of paredit. 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' as defuns and defvars (and the like) and provides visible bookmarks as an outline.
  • outlined-elisp-mode: A collection of settings for the outline minor mode for Elisp buffers.
  • elisp-slime-nav: Instant jumping to function and variable definitions with M-..

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-end Magit: arguably the best version control system and a very well-thought Emacs front-end for it.

Misc

  • ielm: interactive REPL
  • Please extend on this list with your favorite tools if you believe they are widely helpful. – Sean Allred Nov 1 '14 at 4:49
  • I have listed additional resources here – clemera Mar 9 at 11:42

Not the answer you're looking for? Browse other questions tagged or ask your own question.