1. 5

I’m looking at rewriting my new computer bootstrapping script (currently in fish and GNU stow) in Emacs Lisp. Mostly because I really want to learn elisp, partly because it seems like an interesting challenge.

So… what would you recommend to a relative elisp newbie, but one with a bit of Clojure experience? I’ve contributed layers to Spacemacs but those seem kind of trivial compared to the things I’m wanting to write.

I’m particularly interested in opinions about tools, where the most current introductory language guides are, and your “when I was starting with elisp, I wish I had…"s.

  1.  

  2. 6

    Don’t.

    Separate these two things:

    1. rewriting my new computer bootstrapping script
    2. learn elisp

    Since you seem bent on using a Lisp, I’d suggest rewriting your bootstrapping script in either Guile, which is also available in Emacs, or Gauche, which is a useful and practical scheme dialect. You may want to look at the Guix package manager which is similar to Stow but written in Guile.

    Elisp is only useful in so far as it’s part of Emacs. Learn it like you would any other configuration language (ex. awk) with the benefit that its syntax and overall feel is more or less transferable to other Lisps. Elisp is a slightly odd variant in that it’s maintainers have tried their best to avoid incorporating modern (which is to say, 1980’s and 1990’s) Common Lisp and Scheme.

    1. 2

      What does your bootstrapping script involve? Mine is mostly shell commands. Rewriting it in elisp doesn’t seem like a particularly great use of elisp, as you’d mostly end up making shell calls from elisp I think.

      1. 2

        I believe the emacs ecosystem is in the process of slowly shifting over to guile scheme, since its now the official gnu scripting language.

        Somebody correct me if I’m wrong.

        Edit: I am wrong, they’re just starting to use the guile compiler for elisp as well as guile, so you can use both for development and even use libraries from both in a guile or elisp plugin.