2010-02-07 5 views
8

Wie gebe ich eine Funktion an, die ein optionales numerisches Präfix hat, wenn nicht, fragt sie nach einer Zahl? im Grunde wie verhält sich goto-line?Emacs interaktive Funktion mit optionalem numerischen Präfix

(defun my-function(&optional n) 
    ; I have tried 
    (interactive "N") ; reads string, no prompt 
    (interactive "p") ; defaults to one 
    (interactive (if (not n) (read-number "N: "))) ; runtime error 

also wie mache ich Arbeit? danke

+1

FWIW, wenn Sie eine Eingabeaufforderung für "N" wünschen, fügen Sie einfach den Eingabeaufforderungs-Text nach dem N hinzu; '(interaktiv" NType a number: ")'. – jrockway

Antwort

9

Schauen Sie sich an, wie 'goto-line definiert ist (M-x find-function goto-line RET).

(defun my-function (n) 
    "Example function taking a prefix arg, or reading a number if no prefix arg" 
    (interactive 
    (if (and current-prefix-arg (not (consp current-prefix-arg))) 
     (list (prefix-numeric-value current-prefix-arg)) 
    (list (read-number "N: "))))) 
+2

+1. Benutze die Quelle, Luke! – Bahbar

Verwandte Themen