2014-11-01 10 views
7

Mam defun wygodą moim init.el zrobić kilka zalogowaniuJak przekazywać i wypychać argumenty do innej funkcji w emacs-sepp?

(defvar log4me::loglevel 5 
    "Global loglevel.") 

(defun log4me (level logmsg) 
    "Log message." 
    (interactive) 
    (when (>= level log4elisp::loglevel) 
    (message logmsg)))) 

To niby działa, ale jakoś często robić

(log4me somelevel (format "mymessage with %d" 1)) 

Więc znalazłem Emacs Lisp & parametry odpoczynku które Myślę, że mógłbym użyć w ten sposób:

(defun log4me (level logmsg &rest formatparams) 
    "Log message." 
    (interactive) 
    (when (<= level log4elisp::loglevel) 
    (message (format logmsg formatparams)))) 

(log4me 3 "Hello %ust!" 1) 

który ponownie wyświetla się w "Specyfikator formatu nie pasuje do typu argumentu" błąd od Formatpa barany są w rzeczywistości (1), a nie 1.

Czy istnieje dobry sposób na dołączenie parametrów formatu do logonelisp i sprawienie, by pojawiły się w wywołaniu funkcji formatowania jako "normalne" parametry (a nie jedna lista)?

+3

patrz funkcja ZASTOSOWANIA –

+0

@Rainer Joswig Dzięki! Miałem wrażenie, że wszystko, czego potrzebowałem, to wskaźnik do właściwego punktu w dokumentacji. aplikacja działa dobrze. Czy chcesz podać krótką odpowiedź, aby ją zaakceptować? – Matthias

Odpowiedz

5

Co trzeba to apply:

(defun log4me (level logmsg &rest formatparams) 
    "Log message." 
    (interactive) 
    (when (<= level log4elisp::loglevel) 
    (apply #'message logmsg formatparams))) 
Powiązane problemy