
The Emacs Package Developer's Handbook (2017) - rauhl
https://alphapapa.github.io/emacs-package-dev-handbook/
======
eadmund
Oooh, [https://gitlab.com/ambrevar/emacs-gif-
screencast](https://gitlab.com/ambrevar/emacs-gif-screencast) looks
interesting.

There's a ton of good stuff in here … there goes my weekend. The organisation
is a bit idiosyncratic, but I think it works.

~~~
Jugurtha
[https://asciinema.org/](https://asciinema.org/)

I sometimes record deployments, bug fixes, refactoring, etc...

------
anon27893889356
I just started reading the geiser.el elisp code with the long-term objective
of obtaining evaluation support for kawa scheme. I don't feel I master elisp
yet but I'm at the point where I'm not afraid of hacking together some dirty
elisp code. Even so, I didn't think there were so many relevant topics I
didn't even hear about. Great resource for my objective and skill level I
guess.

~~~
cnasc
Interesting, I was just starting to dig into geiser as well! (But for Gerbil
scheme, though Kawa is interesting to me as well)

~~~
anon27893889356
I'm interested in kawa for scripting an application I'm trying to make in
java/scala. Scala's Ammonite somehow works too and I just wrote one of those
dirty hacks to wrap an ammonite repl running in a term window so I could use
ammonite's completion and execution in an org-mode buffer to explore/script
things. However, sometimes lisps make interactive exploring a little simpler
and that's why I initially embedded clojure. Clojure's emacs tooling is
spectacular, so much that it feels like I'm actually extending emacs with java
libraries. But with clojure I had 2 problems:

\- embedding a clojure repl the usual way after the update to java 11 started
giving some error I couldn't solve. Sure, I could just juse java 8. Or use my
project as a jar dependency, but doing java -jar ... and already having a
nRepl server running is simpler than adding a jar to the classpath from a repl

\- licensing: I still don't know which license to use between bsd/apache and
gpl, but in case I go with the gpl there is that epl/gpl incompatibility for
distribution. However, even for this I think there are workarounds that would
be ok for my case

The point is that kawa doesn't have these last 2 problems at all, and writing
geiser support is a good elisp practice that also produces something that may
reveal itself useful later.

And that's why I'm interested in continuing the geiser-kawa attempt that
[https://gitlab.com/mthl](https://gitlab.com/mthl) posted at
[https://gitlab.com/jaor/geiser/issues/55](https://gitlab.com/jaor/geiser/issues/55).
I evaluated several other languages/platforms before choosing java, but
eventually only java and javascript had the killer library. I went java.

------
celeritascelery
I am always amazed at how many libraries and tools there are for programming
in Elisp. One of the things that make it so fun.

~~~
nextos
It's always been a really rich environment, but it's amazing how much dynamism
the whole ecosystem gained by introducing package.el and ELPA, plus to a
lesser extent use-package.

Without package management, keeping even relatively simple Emacs setups
working was not that easy. Now, it's trivial. And thanks to that lots of parts
have been modernized and the whole community is really vibrant.

Emacs has now a really nice completion framework (avy) and auto-complete
(company). Plus, IMHO the best git porcelain of any platform (magit), outliner
(org) and mail user agent (notmuch, plus some bits of gnus).

~~~
gyrgtyn
Yeah sometimes I feel like I don't want to use emacs anymore, but then I think
about magit and org.

After using spacemacs for a couple years, I've started rebuilding my own.
There was too much stuff going on I didn't understand and when something
breaks I have no idea what to do.

Now that I know about general, ivy/swiper/counsel, use-package, and some of
the other building blocks... It's pretty cool.

You know what it reminds me of? npm ~ducks~

~~~
nextos
I do agree that building your own is the only way to progress learning Emacs
and most complex pieces of software. I would also add that relying on as few
packages as possible, and some that are well-known and maintained is
important.

My .emacs is very short, and I strive to simplify it as much as I can so that
it doesn't become fragile or a liability to maintain. It's just a bit of
setqs, use-package boilerplate, and 2-liner configurations for ido, company,
org, magit, notmuch, pdf-tools, auctex, ess, anaconda and a few others.

That way I avoid npm-like insanities.

~~~
WalterGR
Do you live as much as possible in Emacs?

How do you deal psychologically with all the niceties that you give up with so
little configuration?

The first innovation outside of Emacs that springs to mind is find-and-replace
that lets you easily switch between literal, case-insensitive, regex, current
line/selection/whole file, and current file/across multiple files.

Do you just have to tell yourself, “Well, other environments have such
niceties, but I’m giving them up in exchange for other niceties that Emacs
offers?”

~~~
TeMPOraL
> _The first innovation outside of Emacs that springs to mind is find-and-
> replace that lets you easily switch between literal, case-insensitive,
> regex, current line /selection/whole file, and current file/across multiple
> files._

Not sure what you mean, but from my experience, you can do all that in Emacs.
They're not one feature, but a couple distinct one. Incremental find/replace
with or without regex, literal, case-insensitive _within a buffer_ is one
facility, easily accessible through C-s / C-r / C-M-s / C-M-r keys (they're
all for the same feature, just "s" for forwards, "r" for backwards, also press
Meta for regexes), you can switch "modes" on the fly, switch to replacement
mode, or even show the whole list of matches, each with a single keychord.

Incremental searches across multiple files or open buffers can be done too,
though it's not something I've tried personally (I usually pawn off multi-file
searches to grep / find+grep combo, which have a built-in support in Emacs,
and AFAIR also a polyfill for Windows). Consult [0] for discussion.

Editing-wise, I can't think of an outside-Emacs innovation that couldn't - and
wouldn't - get ported over, ending up better than in its source place because
of how Emacs deep interoperability makes all features together better than the
sum of them. The main convenience you're abandoning when switching from an IDE
to Emacs is the lack of deep semantic features - like _really_ smart
autocomplete, or high-quality automatic refactors - but with the development
and popularization of Language Server Protocol and Debug Adapter Protocol, one
can hope this won't be a problem much longer.

\--

[0] -
[https://www.reddit.com/r/emacs/comments/7tf1ln/incremental_s...](https://www.reddit.com/r/emacs/comments/7tf1ln/incremental_search_with_multiple_files/)

~~~
WalterGR
_Not sure what you mean, but from my experience, you can do all that in Emacs.
They 're not one feature, but a couple distinct one._

That’s why I said “easily switch between”. As in, a single piece of UI. If
you’ve used any modern editor or IDE I’m sure you’ve seen this.

 _I can 't think of an outside-Emacs innovation that couldn't - and wouldn't -
get ported over_

The person I was talking to uses fairly stock Emacs, so that’s not a useful
point.

------
TeMPOraL
I'm in the middle of bundling some of my Elisp code into a production-quality
package, so this will come in handy. Thanks 'rauhl for posting it!

