Każde polecenie jest funkcją, ale nie każda funkcja jest także poleceniem. 1
Polecenie obejmuje połączenie z interactive ; dlatego polecenia są powszechnie nazywane „funkcjami interaktywnymi”. Polecenia można wywoływać za pomocą M-x name-of-command RET, a także można je przypisać do sekwencji klawiszy. Zwykłe funkcje nie zawierają wywołania interactive, nie można ich wywołać za pomocą M-xi nie można ich przypisać do sekwencji klawiszy. Aby uruchomić funkcję, która nie jest interaktywna, możesz nacisnąć M-:( eval-expression), wprowadzić nazwę funkcji, a następnie wartości argumentów, które muszą być zawarte w nawiasach, i nacisnąć RET:
M-: (name-of-function arg1 arg2 arg3) RET
Jeśli funkcja nie powinna działać na bieżącym buforze, możesz również wprowadzić
(name-of-function arg1 arg2 arg3)
w *scratch*buforze i naciśnij C-x C-e( eval-last-sexp) z punktem umieszczonym po nawiasie zamykającym.
Aby funkcja była bardostępna jako polecenie, możesz ją owinąć w niestandardową funkcję interaktywną ( foo) w następujący sposób:
(defun foo ()
(interactive)
(bar))
Oczywiście, jeśli barprzyjmiesz jeden lub więcej argumentów, będziesz musiał je podać, aby foodziałać poprawnie.
Jeśli zobaczysz, że ludzie używają terminów „funkcja” i „komenda” zamiennie, może to oznaczać (w zależności od kontekstu), że nie są świadomi różnic między podstawowymi pojęciami.
1 Zauważ, że mówię o defuns tutaj. Jak wskazuje @Stefan w komentarzach, makra klawiaturowe są szczególnym przypadkiem: można je traktować jako polecenia , ale nie są funkcjami.
C-h i, wybierz instrukcję Elisp ,i command- ustawia cię prosto w węźleWhat is a function?, dzięki czemu wszystko jest krystalicznie czyste. Pomóż użytkownikom nauczyć się pytać Emacsa. (Tylko jedna opinia.)