Hi:

I defun a emacsclient-eval function like this

#+begin_src lisp
(defun escape-instance-name (str)
  (let (buf)
    (map nil #'(lambda (ch)
                 (if (or (char= ch #\()
                         (char= ch #\))
                         (char= ch #\")
                         (char= ch #\ ))
                     (push #\_ buf)
                     (push ch buf)))
         str)
    (coerce (reverse buf) 'string)))

(defun emacsclient-eval (&optional expression create-frame frame-name file)
  (let* ((expr-string (string-downcase (prin1-to-string expression)))
         (name (or frame-name
                   (escape-instance-name expression))))
    (run-or-raise
     (concat "emacsclient --server-file=default "
             (when create-frame (concat "-c -F '((name . \"" name "\"))' "))
             (when expr-string (concat " --eval '" expr-string "'"))
             file)
     (list :instance name))))

#+end_src

this can work,
#+begin_src
(emacsclient-eval '(gnus))
#+end_src

but the follow command defun can't work, someone can help me? thanks!

#+begin_src
(defcommand gnus () ()
 (emacsclient-eval '(gnus)))
#+end_src

-- feng shu


_______________________________________________
Stumpwm-devel mailing list
Stumpwm-devel@nongnu.org
https://lists.nongnu.org/mailman/listinfo/stumpwm-devel

Reply via email to