3

What I would like to accomplish is this:

  1. Allow emacs daemon to start with my start up applications like normal
  2. When I open an emacs frame I would like only the first one to start with my rss news feed from elfeed
  3. When I open another frame I would like it to just open to the scratch buffer

I start the emacs daemon upon start up on startup with emacs --daemon added to my Autostart list. I have emacsclient -a "" -c "$@" bound to my launcher on my dock.

In my .emacs file I initialize elfeed just fine but my way of trying to start it is:

(elfeed-update) ;; Update elfeed when daemon starts
(defun start-elfeed ()
  "This function will start elfeed and update it."
  (if (not (get-buffer "*elfeed-search*"))
      (progn
       (elfeed)
       (switch-to-buffer "*elfeed-search*")
    )))
(add-hook 'after-make-frame-functions 'start-elfeed)

Now when I start emacs without the daemon it starts up in the scratch buffer and elfeed has not started, even in a background buffer. When I start it with emacsclient -a "" -c "$@" the daemon seems to start but a frame never pops up. In the terminal I get this error:

*ERROR*: Wrong number of arguments: (lambda nil "This function will start elfeed and update it." (if (not (get-buffer "*elfeed-search*")) (progn (elfeed) (switch-to-buffer "*elfeed-search*")))), 1

I am new to customizing emacs with elisp and could use some help here. Does that error mean that my start-elfeed function has the wrong number of arguments or am I using the after-make-frame-functions hook wrong?

Thank you for any pointers here.

Some other info:

  • Distro: Xubuntu 14.04
  • Emacs 24.5

Edit Nov 11 I changed my function to be like this now:

(defun start-elfeed (&optional frame)
  "This function will start elfeed and update it.  I think it needs FRAME Passed to it."
  (if (not (get-buffer "*elfeed-search*"))
      (progn
    (elfeed)
    (while (not (get-buffer "*elfeed-search*")))
    (switch-to-buffer "*elfeed-search*")
    )))
(add-hook 'server-visit-hook 'start-elfeed)
(add-hook 'after-make-frame-functions 'start-elfeed)

Now it calls (elfeed) but I don't think it is finished when it continues on to the (switch-to-buffer "*elfeed-search*") function. The *scratch* buffer is still the initial buffer but now there is a buffer called *elfeed-search*, with the RSS feeds in it. It seems like the switch-to-buffer call is being skipped over.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.