Inserting the current weather into an Emacs buffer

I’m trying to learn a little elisp. It’s slow going, so having a specific need is helpful.

I like to insert the current weather in each day’s org-journal entry. Previously, I had a TextExpander snippet that would insert the following:

#+BEGIN_SRC sh :results value verbatim
curl ""

This works, but I have to activate the snippet, put the point on the #+BEGIN_SRC line, hit C-c C-c to run it, then delete the block.

As an elisp-learning exercise I thought I’d try creating a function that would do everything for me. Here’s what I came up with:

(defun jab-insert-weather ()
  (let ((w (shell-command-to-string "curl -s ''")))
  (insert (mapconcat (function (lambda (x) (format ": %s" x)))
           (split-string w "\n")

Now, typing M-x jab-insert-weather will insert something like the following into the current buffer:

:               Overcast 
:      .--.     14-21 °F
:   .-(    ).   ↗ 8-20 mph 
:  (___.__)__)  12 mi
:               0.0 in | 0%

Reply to this post
✉️  Reply by email


February 2, 2019